【问题标题】:How to get related field in django template?如何在 django 模板中获取相关字段?
【发布时间】:2015-11-02 21:36:56
【问题描述】:

我有这些相关的模型:

class Forum(models.Model):
...

class ForumFront(models.Model):
    forum = models.ForeignKey(Forum, default=None)
    headline = models.ForeignKey(Topic, default=None)
    topic_count = models.IntegerField(default=0)
    post_count = models.IntegerField(default=0) 

我想在呈现forum 对象的模板上获得topic_countpost_count 字段。我怎样才能最好地做到这一点?

我尝试了不同的标签,例如 {{forum.topic_count}},但它们什么也没显示。

【问题讨论】:

  • topic_count 和 post_count 是 ForumFront 的属性。每个 Forum 对象都有 很多 个 ForumFront 对象,因此有很多 topic_count 和 post_count 值。

标签: django django-models django-templates


【解决方案1】:

这里的问题是你想显示哪个ForumFront。可能有很多 ForumFront 关联到 Forum 对象,因为它是 ForeignKey

你可以调用{{ forum.forumfront_set.all }},你会得到与{{ forum }}相关的所有ForumFront对象。

你可以这样显示它们:

{{ forum }}
<ul>
{% for f_f in forum.forumfront_set.all %}
    <li>{{ f_f.topic_count }}, {{ f_f.post_count }}</li>
{% endfor %}
</ul>

【讨论】:

  • 这行得通。谢谢。但是,由于每个Forum 只有一个ForumFront,我只需将关系更改为forum = models.OneToOneField(Forum, default=None),现在只需使用{{forum.forumfront.topic_count}} 就可以在模板中捕获论坛前沿
  • @Jand 是的,OneToOne 关系不映射到 _set
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 2021-08-15
  • 2012-05-21
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多