2013-10-25 101 views
0

確定多對多的關係我有一個ForeignKey關係建立這樣的:Django的:在模板

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

嘗試通過

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

更換

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

,因爲現在你有一個M2M關係,因此用戶不只是一個列表。 所以.all將返回用戶列表而不是m2m對象(不知道它是一個對象,不知道如何調用它)