可以说,我在 models.py:
中有以下型号配置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)
我知道我可以使用 prefetch_related 操作选择所有ModelA对象和所有相关的ModelB对象。但在我的用例中,我想从ModelA中选择所有对象,并且只从ModelB对象中选择一个(或某些)相关的行来满足某些条件。
例如:
ModelA.objects.prefetch_related(' modelB_set')其中modelB__is_open = True 类似的东西。
预期输出为:
[{
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查询的链接都会非常明显。谢谢!
答案 0 :(得分:1)
尝试使用Prefetch()对象
queryset_b = Model_B.objects.filter(is_open=True)
result=Model_A.objects.prefetch_related(Prefetch('modelsets', queryset=queryset_b))