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
这有帮助。非常感谢! –