我正在尝试在Django Rest Framework中序列化用户数据,并且我只希望返回用户所属的选定组。基于组名是否以_certified结尾。
我看过F表达式,甚至是Q对象,但似乎找不到一种简便的方法甚至可能。
NB。我正在使用内置的User
和Group
模型。
我的预期结果是
{
"User": {
...
"Groups": ['role1_certified', 'role2_certified' ...]
}
}
Groups
仅应包含以_certified
结尾的组
答案 0 :(得分:0)
根据Yahor的评论,我得出的解决方案如下。
from django.contrib.postgres.aggregates import ArrayAgg
from django.db.models import Q
user = User.objects.annotate(certified_groups=ArrayAgg(
'groups__name', filter=Q(groups__name__endswith='_certified')))