Django:确定模板中的ManyToMany关系

时间:2013-10-25 20:20:19

标签: python django filtering django-templates

我设置了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 %}时显示不同的消息?

1 个答案:

答案 0 :(得分:0)

尝试替换

{% if thing.watchlist.user != request.user %}

通过

{% if request.user not in thing.watchlist.user.all %}

因为现在你有一个m2m关系,所以用户列表不仅仅是一个。 所以.all将返回用户列表而不是m2m对象(不确定它是一个对象,不知道如何调用它)