0
比方說,我在models.py以下型號配置:Django的關聯模型中選擇一個行集
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中選擇所有對象,並只從ModelB對象中選擇滿足特定條件的一個(或某些)相關行。
例如:
ModelA.objects.prefetch_related( 'modelB_set')其中modelB__is_open =真 類似的東西。
的預期結果是:
[{
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
這有幫助。非常感謝! –