如何从django中的查询集中对foreignkey值进行分组

时间:2015-01-16 06:36:36

标签: django

我有两个模型如下:

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'))

但结果是四个项目列表

1 个答案:

答案 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')]