我设置了ForeignKey
这样的关系:
class WatchList(models.Model):
user = models.ForeignKey(User)
class Thing(models.Model)
watchlist = models.ForeignKey(WatchList, null=True, blank=True)
这允许我在我的模板中有条件地显示不同的消息,如下所示:
{% if thing.watchlist.user != request.user %}
Something
{% else %}
Nothing
{% endif %}
但是,现在我已将我的关系从ForeignKey
更改为ManyToManyField
,这种模板内过滤不再有效:
class WatchList(models.Model):
user = models.ForeignKey(User)
class Thing(models.Model)
watchlist = models.ManyToManyField(WatchList)
在模板中尝试此类型的模板标签过滤会显示AttributeError: 'ManyRelatedManager' object has no attribute 'user'
。
如何使用ManyToMany关系过滤模板中的对象,以便在{% if thing.watchlist.user != request.user %}
时显示不同的消息?
答案 0 :(得分:0)
尝试替换
{% if thing.watchlist.user != request.user %}
通过
{% if request.user not in thing.watchlist.user.all %}
因为现在你有一个m2m关系,所以用户列表不仅仅是一个。
所以.all
将返回用户列表而不是m2m对象(不确定它是一个对象,不知道如何调用它)