2017-02-12 76 views
0

我想一旦用戶按照它來展示「跟隨」按鈕,用戶沒有遵守項目時,和更新按鈕。的Django如果其他模板標籤查詢集不對

我嘗試使用下面的模板標籤,但它總是返回true。

這裏是項目的人可以按照模型,下面包括目前正在跟蹤該項目的追隨者清單。

class Team(models.Model): 
    following = models.ManyToManyField(
     settings.AUTH_USER_MODEL, 
     related_name='followers', 
     blank=True, 
    ) 

這些是我試過的模板標籤,但它總是返回「Follow」。

{% if not request.user in user.followers.all %} 
    <div class="progress-stats"> 
     <a href="{% url 'teams:follow' team.id %}">Follow</a> 
    </div> 
{% endif %} 
{% if request.user in user.followers.all %} 
    <div class="progress-stats"> 
     <a href="{% url 'teams:unfollow' team.id %}">Unfollow</a> 
    </div> 
{% endif %} 
+0

這裏的用戶是什麼?你確定它不是'request.user'嗎? –

回答

1

你要檢查,如果用戶是在隊中的following

<div class="progress-stats"> 
    {% if request.user in team.following.all %} 
    <a href="{% url 'teams:unfollow' team.id %}">Unfollow</a> 
    {% else %} 
    <a href="{% url 'teams:follow' team.id %}">Follow</a> 
    {% endif %} 
</div> 

至於場命名推移,這會更有意義:

class Team(models.Model): 
    followers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='teams', blank=True) 

現在,可以通過team.followers.all()和給定用戶的團隊通過user.teams.all()訪問指定團隊後面的用戶。

+0

工作完美,查詢有時會混淆哈哈 –

0

嘗試將request.user更改爲僅用戶。

request.user存在意見代碼。然而,系統自動向用戶提供模板代碼。

request.user是null或無,我不知道它,但它基本上意味着,任何時候你尋找它在查詢中,從模板,它不會在那裏。因此,不管request.user是什麼,總會是真的。

編輯:另外,如果你是從視圖提供「用戶到模板中明確,請嘗試更改到別的東西。正如我上面所說,模板代碼自動提供用戶。它不提供request.user。在大多數情況下,不存在的變量只會靜默失敗,併爲其特定的預設數據類型返回適當的默認值。