2013-12-14 70 views
3

有一個奇怪的問題。比方說,在我的內容模型:Django模板:如何基於模型中的布爾字段顯示HTML塊

show_in_posts = models.BooleanField() 
show_in_news = models.BooleanField() 
show_in_updates = models.BooleanField() 

然後在我的{% for content in contents %}模板:

{% if content.show_in_news == 'True' %} 
    .... 
{% endif %} 

似乎無法獲得的條件工作。看起來{{ content.show_in_news }}總是評估爲True,即使它在管理面板中設置爲未選中狀態。我試過沒有引號{% if content.show_in_news == True %}也試過全部小寫真,或者只是{% if content.show_in_news %}不行。

其他一些帖子建議註冊一個自定義的「過濾器」,但這似乎很微不足道,應該開箱即用?

非常感謝的幫助!

+0

什麼'{{content.show_in_news}}'給你? –

+0

每個以上,即使複選框未在管理員中被選中,似乎總是「真」。 – pete

+0

有些事情肯定是錯誤的。即使我的其他布爾值都在模板中打印爲「真」,但它們在數據庫中肯定設置爲關閉。我可以在管理員中切換它們並保存 - 它們變成紅色的「停止標誌」圖標,切回並保存,返回到「綠色選中標記」 - 一切正常。我只是不能讓他們通過模板來通過除True以外的其他任何模板。其他類型,例如CharField,TextArea顯示正常..呃,什麼給出:( – pete

回答

0

您可以使用匹配BooleanField條件:

{% ifequal content.show_in_news True %} 
    Your code here 
{% endifequal %} 

或者這樣

{% if content.show_in_news %} 
    your code here 
{% endif %} 
0

我只是碰到了這一點。發生了什麼是Django的{%if expr%}如果expr存在並且不是None,則評估爲true。由於表單字段本身存在,條件總是評估爲真。煩人。

你可以把它的工作就像你期望通過價值明確,像這樣:

{% if content.show_in_news.value %} 
相關問題