Django获取许多值作为列表
我需要groupname作为列表而不是单独记录的用户详细信息Django获取许多值作为列表,django,postgresql,django-rest-framework,django-queryset,Django,Postgresql,Django Rest Framework,Django Queryset,我需要groupname作为列表而不是单独记录的用户详细信息 class Groups: name = models.CharField(max_length=100) class User: firstname = models.CharField(max_length=100) lastname = models.CharField(max_length=100) group = models.ManyToManyField(Groups) 当我像上面那样
class Groups:
name = models.CharField(max_length=100)
class User:
firstname = models.CharField(max_length=100)
lastname = models.CharField(max_length=100)
group = models.ManyToManyField(Groups)
当我像上面那样询问时,我变得这样了
但是我想要这样
有没有一种方法,我可以这样查询,而不需要单独查询。如果您使用postgres,您可以使用。在Django ORM中,如下所示:
User.objects.values('firstname','lastname', 'group__name')
注意:distinct
很有用,因为连接表可能会导致重复
from django.contrib.postgres.aggregates import ArrayAgg
User.objects \
.annotate(list_of_group_names=ArrayAgg('group__name')) \
.order_by('id').distinct() \
.values('firstname', 'lastname', 'list_of_group_names')