使用过滤的组注释用户对象

时间:2019-05-09 11:36:25

标签: django python-3.x django-rest-framework

我正在尝试在Django Rest Framework中序列化用户数据,并且我只希望返回用户所属的选定组。基于组名是否以_certified结尾。

我看过F表达式,甚至是Q对象,但似乎找不到一种简便的方法甚至可能。

NB。我正在使用内置的UserGroup模型。

我的预期结果是

{
    "User": {
        ...
        "Groups": ['role1_certified', 'role2_certified' ...] 
    }
}

Groups仅应包含以_certified结尾的组

1 个答案:

答案 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')))