【问题标题】:paginating with one-to-many relation in django在 django 中使用一对多关系进行分页
【发布时间】:2013-11-24 06:11:07
【问题描述】:

我有 1 多个相关模型。

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. 在视图中执行必要的数据库查询并以某种方式将其传递给模板

【问题讨论】:

  • 在视图中进行分页比在模板中更好。
  • 你的意思是你也需要分页栏吗?
  • 我需要在模板中显示 foo.bars。

标签: python django templates pagination


【解决方案1】:

您可以在 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 %}

edit: 或者您可以在模板中使用 {% for bar in foo.bars.all %}如果你想要所有这些。

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多