我有两个Django模型之间的许多一对多的关系:在我的模板检查如果两个模式属于多到许多关系
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
...
bees = models.ManyToManyField('Bee')
class Bee(models.Model):
...
,我想有根据不同的输出用户是否拥有某些蜜蜂。我在做什么,现在是创造,它类似的东西这个自定义过滤器:
@register.filter
def my_filter(user, bee):
userprofile = user.get_profile()
return bee in userprofile.bees.all()
和模板,我可以用它作为这样的:
{% for bee in bees %}
{% if user|my_filter:bee %}
I am in {{ bee }}
{% else %}
I am not in {{ bee }}
{% endif %}
{% endfor %}
但这似乎hackish的自1)我叫.all() - 加载所有蜜蜂,包括我不感兴趣的蜜蜂 - 没有使用结果,2)我不认为我需要创建一个自定义过滤器,因为这应该是相当普遍
什么是正确的方法来检查模型是否属于多对多关系与另一个模型?
什么是“蜜蜂”应该是在你的过滤器?我猜,与“蜜蜂”有关的“蜜蜂”是什么? – 2011-05-12 21:53:48
@Bryce Siedschlaw:蜜蜂是蜜蜂的一种复数(我通常对容器(例如列表,字典)或数据库表使用复数名称,对非容器或数据库行使用单数名称,另外,我还添加了一些更正这个问题不那么令人困惑(我在早上4点写信道歉)。 – 2011-05-13 10:12:22