Python 如何在每个用户的布尔标志旁边检索所有用户名,以指示其在组中的成员身份?
我正试图建立一个页面,允许管理员用户切换到每个用户的特定组的成员资格。我的目标是使用AJAX功能实现这一点。我正在使用Django 2.2 我已经实现了一个AJAX调用,它返回系统中的所有用户——这些数据填充了一个。下一步是在每个用户旁边设置一个复选框,指示他们在组中的成员身份 我在视图中使用下面的代码来检索用户Python 如何在每个用户的布尔标志旁边检索所有用户名,以指示其在组中的成员身份?,python,django,django-models,Python,Django,Django Models,我正试图建立一个页面,允许管理员用户切换到每个用户的特定组的成员资格。我的目标是使用AJAX功能实现这一点。我正在使用Django 2.2 我已经实现了一个AJAX调用,它返回系统中的所有用户——这些数据填充了一个。下一步是在每个用户旁边设置一个复选框,指示他们在组中的成员身份 我在视图中使用下面的代码来检索用户 users=list(GeminiUser.objects.filter(is_active=1).value('email')) 我希望用户查询结果为每个用户包含一个布尔字段,指示
users=list(GeminiUser.objects.filter(is_active=1).value('email'))
我希望用户查询结果为每个用户包含一个布尔字段,指示他们在特定组中的成员身份。我怎样才能做到这一点
感谢您的指导。我们可以通过子查询和:
您还可以对queryset执行额外的筛选,例如,它只显示活动用户等
至于序列化,请使用序列化程序。不建议使用
.values()
。通过分离查询和表示,您可以更轻松地扩展、更新REST视图等。您使用的是什么Django版本?我使用的是Django版本2。2@Mr.B:您是否定义了与/a组
模型的m2m关系?你应该在user=…
中使用related\u name
而不是user
。是的-它按预期工作,我只是忽略了一些东西。非常感谢您的帮助。如何使序列化程序也包含in_group属性?我尝试将“in_group”指定为序列化程序的字段,但没有效果。@MrB:您可以使用只读
来指定它:这是否意味着我必须为用户模型创建序列化程序类?
from django.db.models import Exists, OuterRef
in_group = Group.objects.filter(
pk=mygroup.pk,
user=OuterRef('pk')
)
my_users = User.objects.annotate(in_group=Exists(in_group))
>>> from django.contrib.auth.models import Group, User
>>> mygroup = Group.objects.first()
>>> from django.db.models import Exists, OuterRef
>>>
>>> in_group = Group.objects.filter(
... pk=mygroup.pk,
... user=OuterRef('pk')
... )
>>>
>>> my_users = User.objects.annotate(in_group=Exists(in_group))
>>> my_users
<QuerySet [<User: >, <User: test>]>
>>> [u.in_group for u in my_users]
[True, False]