【发布时间】:2017-04-16 23:48:33
【问题描述】:
比方说,我在 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 查询的链接都会非常有用。谢谢!
【问题讨论】:
标签: python django django-models django-rest-framework