0
を設定し、私はmodels.pyで以下のモデルの構成を有している、と言うことができます:Djangoが関連するモデルから1行を選択は
class ModelA(models.Model):
columnA = models.ForeignKey(ModelZ)
created = models.DateTimeField(auto_now_add=True)
class ModelB(models.Model):
columnB = models.ForeignKey(ModelA, related_name='modelsets')
is_open = models.BooleanField()
created = models.DateTimeField(auto_now_add=True)
私はすべてのMODELAのオブジェクトを選択することができますし、すべての関連ModelBオブジェクトを使用して知っていますprefetch_related操作。しかし、私の使用例では、ModelAからのすべてのobejectと、特定の条件を満たすModelBオブジェクトからの1つ(またはいくつか)の関連する行のみを選択したかったのです。例えば
:modelB__is_openはそのような真 何かを=
ModelA.objects.prefetch_related( 'modelB_set')。
予想される出力は次のようになります。
[{
columnA : 1
created : 'time'
modelsets :[{
columnB : 1
is_open = True
created = 'time'
},{
columnB : 2
is_open = True
created = 'time'
}
},{
columnA : 2
created : 'time'
modelsets :[{
columnB : 3
is_open = True
created = 'time'
}
}]
私はこれについてグーグルの疲れは、DjangoのORMのクエリをより良く理解するためのすべてのリンクは非常にかなりのだろう。ありがとう!
を使用してみてください。しかし、ModelAはModelB_setを見つけることができません。 'modelB_set'はprefetch_related()_の無効なパラメータです。私はこれを反映するためにModels.pyで何かする必要がありますか? –
@nithinksああ、related_nameを使用していて、これを試してみてください: 'Prefetch( 'modelsets'、queryset = queryset_b)' – neverwalkaloner
それが助けになりました。どうもありがとう! –