Django模板判断Ad_company的contract_user与当前用户相等不生效如何解决
Django模板相等判断不生效问题解决
问题根源
- 你传入模板的
adlist是Django Paginator分页组件返回的分页页对象,并非单条Ad_company模型实例,直接调用adlist.contract_user无法获取到单条数据的contract_user字段值 - 对比的两个值类型不匹配:
contract_user是存储用户名字符串的CharField字段,模板中的user是Django内置的用户模型对象,二者类型不同,即使存储的用户名一致也不会判定相等
修复方案
1. 模板中先遍历分页列表获取单条广告实例
你需要先循环adlist拿到每一条Ad_company实例后,再针对单条数据做判断
2. 调整判断逻辑,对比同类型的用户名字符串
将判断条件修改为对比单条广告的contract_user和user.username(登录用户的用户名字符串)
修复后的模板代码示例
{% for ad in adlist %} <!-- 你的其他广告展示代码 --> {% if ad.contract_user == user.username %} <span class="ad-state full-time">contract</span> {% endif %} {% endfor %}
可选调试方案
如果修改后仍不生效,可以在判断逻辑前临时加入以下代码,确认输出的两个值是否完全一致:
<p>当前广告条目contract_user值:{{ ad.contract_user }}</p> <p>当前登录用户用户名:{{ user.username }}</p>
内容的提问来源于stack exchange,提问作者basskiller
相关产品推荐
相关产品推荐

