【发布时间】:2020-02-24 13:16:03
【问题描述】:
我正在尝试获取群组 Creator 和群组 Teacher 中的用户的查询集。
test.py 我发送要过滤的组数组:
def test_admin_create_authenticated(self):
data = {"data": {"alert_type":"system", "text": "UnitTest"}, "filters":{"groups":['Teacher', 'Creator'], "together": True}}
url = reverse('admin_alerts-list')
response = self.client.post(url, json.dumps(data), content_type="application/json")
self.assertEqual(response.status_code, status.HTTP_200_OK)
views.py:在这里我想创建一个 q_objects,它将按名称过滤组:
if 'groups' in filters:
print(filters['groups'])
try:
for group in filters['groups']:
q_objects.add(Q(groups__name=group), variable)
except:
q_objects.add(Q(groups=filters['groups']), variable)
然后找到这些组中的所有用户:
print(q_objects)
users = User.objects.filter(q_objects)
print(users.query)
print(users)
终端:
['Teacher', 'Creator']
(AND: ('groups__name', 'Teacher'), ('groups__name', 'Creator'))
SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" INNER JOIN "auth_user_groups" ON ("auth_user"."id" = "auth_user_groups"."user_id") INNER JOIN "auth_group" ON ("auth_user_groups"."group_id" = "auth_group"."id") WHERE ("auth_group"."name" = Teacher AND "auth_group"."name" = Creator)
<QuerySet []>
为什么我的 q_objects 不起作用?我有一个用户属于这 2 个组。
【问题讨论】:
-
您在组中同时查询名称为
Teacher和Creator的老师。任何组都不能有一个同时包含两个事物的名称。