【问题标题】:Display Django values() on Foreign Key in template as object instead of its id将模板中外键上的 Django values() 显示为对象而不是其 id
【发布时间】:2010-12-08 19:44:09
【问题描述】:

我在 Django 中有一个查询集,它调用 Model.objects.values('item')... 其中 'item' 是外键。

class Words(models.Model):
  word = models.CharField()

class Frequency(models.Model):
  word = models.ForeignKey(Words)
  ...

所以这会返回项目 id 并在模板中显示为 id。如何在模板中显示实际项目值而不是 id?

【问题讨论】:

    标签: django django-templates django-aggregation


    【解决方案1】:

    要引用外键项的属性,您应该在字段中使用“__”查找符号。 MyModel.objects.values('item__prop1', 'item__prop2', ...) 应该适合你。

    当结果的模板变量名称为values时,您可以通过引用这样的属性名称在模板中打印它。

    {% for v in values %}
        Prop1: {{ v.item__prop1 }}
        Prop2: {{ v.item__prop2 }}
        ...
    {% endfor %}
    

    【讨论】:

    • 显然 Achimnoi 使用 'prop1' 作为示例 - 您应该在视图中使用 Model.objects.values('word__word'),在模板中使用 {{ v.word__word }}
    • 当您只有一个模型时,这似乎是一个可行的解决方案。但是,就我而言,我有一个模型列表,每个模型都有一个 FK 列表(实际上是多对多关系)。但这似乎不应该成为问题,因为这些值仍然是 FK(指向另一个表中的 ID)。该视图还将模型列表序列化为 JSON。
    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 2017-07-25
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2019-06-26
    • 1970-01-01
    相关资源
    最近更新 更多