如何检查某个对象/标识是否在列表中?检查对象是否在模板中的许多列表中
如果连接对象的ID不是“6”,我想要显示一些东西。
试过这样的事情:
{% if user.benefits.all != "6" %}
You do not have a benefit with ID 6.
{% endif %}
如何检查某个对象/标识是否在列表中?检查对象是否在模板中的许多列表中
如果连接对象的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 %}
已更新:
如果您仍然希望在模板中使用它,最好创建一个custom template filter:
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 %}
和使用您的templatetags模块:
{% 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 %}
但通过所有的好处这将循环并打印每病情经过的时间。
所以,你应该写一个模板标签,它会返回IDS的所有好处的列表为特定的用户,一旦你有一个列表,你可以这样做:
{% if 6 not in list_of_benefit_ids %}
You do not have a benefit with id 6
{% endif %}
好吧,我希望我能跳到另一个用于循环。但不要猜测。 –
@ Garreth00您应该在视图中执行此检查,而不是在模板中执行。您应该始终输出“过滤”并完成模板的数据。 –
谢谢!我想我会试着在视图中这样做。 –