Django:获取外键的值而不是id

时间:2018-06-25 12:38:18

标签: django foreign-keys

我正在尝试在模板中使用外键值。

当我尝试显示它时,我会在屏幕上正确获得该值。

{% 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使用应用程序内的值,是否还有另一种方法来获取实际值以进行比较?我应该使用序列化器方法吗?

谢谢!

1 个答案:

答案 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" %}