Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在每个用户的布尔标志旁边检索所有用户名,以指示其在组中的成员身份?_Python_Django_Django Models - Fatal编程技术网

Python 如何在每个用户的布尔标志旁边检索所有用户名,以指示其在组中的成员身份?

Python 如何在每个用户的布尔标志旁边检索所有用户名,以指示其在组中的成员身份?,python,django,django-models,Python,Django,Django Models,我正试图建立一个页面,允许管理员用户切换到每个用户的特定组的成员资格。我的目标是使用AJAX功能实现这一点。我正在使用Django 2.2 我已经实现了一个AJAX调用,它返回系统中的所有用户——这些数据填充了一个。下一步是在每个用户旁边设置一个复选框,指示他们在组中的成员身份 我在视图中使用下面的代码来检索用户 users=list(GeminiUser.objects.filter(is_active=1).value('email')) 我希望用户查询结果为每个用户包含一个布尔字段,指示

我正试图建立一个页面,允许管理员用户切换到每个用户的特定组的成员资格。我的目标是使用AJAX功能实现这一点。我正在使用Django 2.2

我已经实现了一个AJAX调用,它返回系统中的所有用户——这些数据填充了一个。下一步是在每个用户旁边设置一个复选框,指示他们在组中的成员身份

我在视图中使用下面的代码来检索用户

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]