1

関連するモデルが 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 オブジェクトごとにバーのデータを表示する必要があります。
推奨されるアプローチとその方法は何ですか?

  1. テンプレートから DB クエリを実行します (inclusion_tag か何か?)
  2. ビューで必要なDBクエリを実行し、それを何らかの方法でテンプレートに渡します
4

1 に答える 1

0

Foo クラスでプロパティを作成して、関連するバーを返すことができます。

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 に答える