我可以根据用户模型中的字段对结果分组吗?
models.py
dest
views.py
class User(AbstractUser):
USERTYPE = (('1','type_1'),('2','type_2'),....)
user_type = models.CharField(max_length=2,choices=USERTYPE)
.....
如何仅使用django ORM查询以以下格式获取具有groupby的所有用户数据。
User.object.all().values('first_name','last_name')
答案 0 :(得分:1)
您不能在查询本身中执行此操作。但是您可以对查询进行一些后处理:
from itertools import groupby
from operator import methodcaller
qs = User.object.order_by('user_type')
result = {
k: [{ 'first_name': u.first_name, 'last_name': u.last_name } for u in us]
for k, us in groupby(qs, methodcaller('get_user_type_display'))
}
因此,我们在这里通过user_type
字段对查询集进行排序,然后让groupby(..)
根据get_user_type_display()
方法进行分组。然后,我们可以为每个这样的组创建子列表。