簡體   English   中英

Django:確定模板中的多對多關系

[英]Django: Determining ManyToMany Relationship in Template

我建立了一個如此的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)

在模板中嘗試這種類型的templatetag過濾會發現AttributeError: 'ManyRelatedManager' object has no attribute 'user'

我如何過濾具有ManyToMany關系的模板中的對象,以便在{% if thing.watchlist.user != request.user %}可以顯示不同的消息?

嘗試更換

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

通過

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

因為現在您已經建立了m2m關系,所以用戶列表不僅僅是一個。 因此.all將返回用戶列表,而不是m2m對象(不確定它是一個對象,不知道如何調用它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM