You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板if语句判断产品分类不生效问题咨询

问题根因
  • Product模型的category字段为IntegerField类型,配置choices参数后,数据库中存储的是选项元组对应的整数值,并非页面展示用的分类名称字符串。
  • 按现有CATEGORY配置,Champagne对应的存储值是整数4,模板中写的product.category == 'Champagne'是拿整数类型值和字符串做相等判断,条件永远不成立,因此目标按钮区块无法渲染。
  • 现有Models.py、Forms.py代码无逻辑错误,无需修改。
修正方案

以下两种写法都可实现需求,优先推荐第二种可维护性更强的方案:

方案1:直接匹配字段存储的整数值

仅修改模板if判断的对比值即可:

{% if product.category == 4 %}
<div class="d-flex flex-column mt-4">
    <a class="btn btn-outline-secondary btn-sm" href="{% url 'ElderFlowerReview' product.id %}">Tasting Notes</a>
</div>
{% endif %}

方案2:匹配分类显示名称(推荐)

Django会为所有配置了choices的模型字段自动生成get_<字段名>_display()方法,调用该方法可直接获取选项对应的可读名称,不需要记忆分类对应的数字映射,后续如果调整分类对应的整数值,也不需要修改模板判断逻辑:

{% if product.get_category_display == 'Champagne' %}
<div class="d-flex flex-column mt-4">
    <a class="btn btn-outline-secondary btn-sm" href="{% url 'ElderFlowerReview' product.id %}">Tasting Notes</a>
</div>
{% endif %}

内容的提问来源于stack exchange,提问作者PhilM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:51:45