我正在尝试在模板中使用外键值。
当我尝试显示它时,我会在屏幕上正确获得该值。
{% for x in dataset %}
<p> {{ x.fieldname }}
{% endfor %}
但是当我尝试将其用于比较时,它使用的是id,而不是值。
{% for x in dataset %}
{% if x.fieldname == "The name I want" %}
<p> {{ x.fieldname }}
{% endif %}
{% endfor %}
我一直在找一些与此相关的序列化程序相关的文章,但是(据我所知),我知道序列化程序是从应用程序外部发送或接收数据。
由于仅tu使用应用程序内的值,是否还有另一种方法来获取实际值以进行比较?我应该使用序列化器方法吗?
谢谢!
答案 0 :(得分:1)
我认为您在这里承担太多“魔术”。如果获取与ForeignKey
相关的属性,则它仅获取相关实例。现在,如果您渲染此类实例,Django通常会回退到模型实例的__str__
上。
因此,您需要做的是找出所引用模型的__str__
的工作方式。例如,如果Model
使用.name
属性将其转换为字符串,则可以编写:
{% if x.fieldname.name == "The name I want" %}
如果未知其渲染方式,则可以使用stringformat
模板过滤器:
{% if x.fieldname|stringformat:"" == "The name I want" %}