如何检查某个对象/id 是否在列表中?
如果连接对象的 ID 不是“6”,我希望显示一些内容。
尝试过这样的事情:
{% if user.benefits.all != "6" %}
You do not have a benefit with ID 6.
{% endif %}
如何检查某个对象/id 是否在列表中?
如果连接对象的 ID 不是“6”,我希望显示一些内容。
尝试过这样的事情:
{% if user.benefits.all != "6" %}
You do not have a benefit with ID 6.
{% endif %}
最好不要将太多逻辑放入模板中。视图(或模型)- 是一个更好的地方。
例如,您可以通过以下代码检查 user.benefits 具有 id=6 的元素:
has_benefit = user.benefits.filter(id=6).count() > 0
context['has_benefit'] = has_benefit
现在在模板中只需使用这个新的上下文变量:
{% if not has_benefit %}
You do not have a benefit with ID 6.
{% endif %}
更新:
如果您仍想在模板中执行此操作,最好创建自定义模板过滤器:
from django import template
register = template.Library()
@register.filter(name='has_benefit')
def has_benefit(user, benefit_id):
b_id = int(benefit_id)
return user.benefits.filter(id=b_id).count() > 0
现在在模板中加载你的模板标签模块{% load module_name %}
并使用:
{% if not user|has_benefit:"6" %}
You do not have a benefit with ID 6.
{% endif %}
{% for benefit in user.benefits.all %}
{% if benefit.id != 6 %}
You do not have a benefit with id 6
{% endif %}
{% endfor %}
但这将遍历所有好处并在每次条件通过时打印出来。
因此,您应该编写一个模板标签,它会为您返回一个特定用户的所有福利的 id 列表,一旦您拥有该列表,您就可以执行以下操作:
{% if 6 not in list_of_benefit_ids %}
You do not have a benefit with id 6
{% endif %}