1

我有 1-many 相关模型。

class Foo(models.Model):

    foo_data = models.IntegerField()

class Bar(models.Model):

    foo = models.ForeignKey(Foo, related_name="bars")

    bar_data = models.IntegerField()

paginator = Paginator(Foo.objects.filter(id=foo_id), 10)
page = 1
foos = paginator.page(page)

我需要在 django 模板中为每个 foo 对象显示 bar 的数据。
首选方法是什么以及如何?

  1. 从模板执行数据库查询(inclusion_tag 之类的?)
  2. 在视图中执行必要的数据库查询并以某种方式将其传递给模板
4

1 回答 1

0

您可以在 Foo 类中创建一个属性以返回相关的 Bars:

class Foo(models.Model):

    foo_data = models.IntegerField()

    def _get_bars(self):
        return self.bars.all()
    bars = property(_get_bars)

然后在模板中使用 {% for bar in foo.bars %}

编辑:或者你可以在模板中使用 {% for bar in foo.bars.all %} 我认为,如果你需要做一些额外的过滤,属性很有用,但如果你想要所有这些,这里就不需要了。

于 2013-11-12T10:42:22.500 回答