【发布时间】:2020-11-08 13:07:22
【问题描述】:
我有 MyUser 模型,其中包含 ForeignKey 和 ManyToMany 相关字段 city 和 skills:
accounts/models.py
class MyUser(AbstractBaseUser):
email = models.EmailField()
city = models.ForeignKey('jobs.City')
skills = models.ManyToManyField('jobs.Skill')
jobs/models.py
class Skill(models.Model):
name = models.CharField()
class City(models.Model):
name = models.CharField()
我需要创建一个以这种格式返回数据的查询集:
{'email': 'some@email.com', 'city': 'London', 'skills': ['Python', 'Java']},
{'email': 'another@email.com', 'city': 'Berlin', 'skills': ['JavaScript', 'C#', 'Python']},
...
MyUser.objects.values('email', 'city__name', 'skills__name') 返回我需要的所有数据,但 ManytoMany 值分别返回,重复其他条目:
{'email': 'some@email.com', 'city': 'London', 'skills': 'Python'},
{'email': 'some@email.com', 'city': 'London', 'skills': 'Java'},
{'email': 'another@email.com', 'city': 'Berlin', 'skills': 'JavaScript'},
{'email': 'another@email.com', 'city': 'Berlin', 'skills': 'C#'},
{'email': 'another@email.com', 'city': 'Berlin', 'skills': 'Python'},
...
那么如何创建一个将 ManyToMany 值聚合为一组的查询集?
【问题讨论】:
标签: python django django-orm