Django模板:如何在mod中基于布尔字段显示HTML块

2024-04-20 04:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个奇怪的问题。比如说,在我的内容模型中:

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

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

^{pr2}$

似乎无法使这种情况发挥作用。似乎{{ content.show_in_news }}的计算结果始终为True,即使它在管理面板中设置为未选中。我没有试过引号{% if content.show_in_news == True %}也尝试了所有小写的true,或者只是{% if content.show_in_news %}没有运气。在

其他一些帖子建议注册一个自定义的“过滤器”,但这看起来太微不足道了,应该开箱即用吗?在

非常感谢您的帮助!在


Tags: in模型模板true内容forifmodels
2条回答

我也碰到过这个。如果expr存在而不是None,Django的{%if expr%}计算结果为true。由于表单字段本身存在,因此条件始终计算为true。烦人的。在

通过显式地使用该值,您可以使它像您期望的那样工作,如下所示:

{% if content.show_in_news.value %}

您可以使用匹配布尔字段条件:

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

或者像这样

^{pr2}$

相关问题 更多 >