Django の左外側逆 select_related ですか? 質問する

Django の左外側逆 select_related ですか? 質問する

次のモデルを想像してください。

class Parent(Model):
    ...

class Child(Model)
    father = ForeignKey(Parent)
    ...

子供がいる親もいれば、いない親もいます(本当の意味での親ではなく、架空の名前です)。

次の質問をしたいと思います: リストしたいすべての親、子供がいる場合は、子供たちも連れてきてこれは、Child テーブルへの左外部結合と同等です。

select * from app_parent left join app_child on child_father_id=parent_id

このように、私が呼び出すと親.子セット私のテンプレートでは、データベースに何度もアクセスすることはありません。それを実現する方法はありますか?ありがとうございます

ベストアンサー1

Django 1.4 以降では、prefetch_related必要なことが可能になります。

Parent.objects.prefetch_related('child_set')

関連(!) django ドキュメント:https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related

おすすめ記事