如何在 Django 中对查询集中的外键值进行分组

how to group foreignkey values from a queryset in 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)

有两个站点,每个站点有两个 directions.The 结果我想要的是一个包含两个元素的列表,每个元素代表一个站点,其中有两个方向分组为列表。类似于:

[{"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'))

但结果是包含四个项目的列表

尝试 prefetch_related 并列出理解:

[{
    "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')]