我有兩個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