我有两个模型如下:
class site(models.Model):
siteId = models.CharField(max_length=5)
siteName = models.CharField(max_length=255)
class directions(models.Model):
name = models.CharField(max_length=10)
direction = models.CharField(max_length=10)
siteInfo = models.ForeignKey(site)
有两个站点,每个站点有两个方向。我想要的结果是一个包含两个元素的列表,每个元素代表一个站点,其中两个方向被分组为列表。类似的东西:
[{"siteId":1,"siteName":baba,"siteInfo":[{"name":"xx","direction":"south"},{"name":"yy","direction":"north"},]]
我试过了:
print list(site.objects.all().values('siteName','siteId','directions__direction','directions__name'))
但结果是四个项目列表
答案 0 :(得分:3)
尝试prefetch_related和list comprehensions:
[{
"siteId": site.siteId,
"siteName": site.siteName,
"siteInfo": [{
"name": siteInfo.name,
"direction": siteInfo.direction
} for siteInfo in site.directions_set.all()]
} for site in Site.objects.prefetch_related('directions_set')]