如何在 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')]
我有两个型号如下:
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')]