0

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 %}

但是,现在我已经将关系从ForeignKeyto更改为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 %}

4

1 回答 1

0

尝试更换

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

经过

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

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

于 2013-10-25T20:25:45.287 回答