繁体   English   中英

在Django中进行一对多关系分页

[英]paginating with one-to-many relation in django

我有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类中创建一个属性以返回相关的Bar:

class Foo(models.Model):

    foo_data = models.IntegerField()

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

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

编辑:或者您可以在模板中使用{%for foo.bars.all%}中的bar,我认为,如果您需要进行一些额外的过滤,则属性很有用,但如果要全部使用,则在这里并不需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM