django 如何检查用户是在组中还是在其他组中

5rgfhyps  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(123)

我正在使用django编写一个API,我想使用request.user.groups.filter()方法检查用户是在A组还是B组,但似乎不起作用。我希望能够通过name参数传递不止一个组,以检查它们是否确实在组A或组B中。
我尝试了以下方法:

if request.user.groups.filter(name="A") or request.user.groups.filter(name="B"):
   do stuff

我也试过:

if request.user.groups.filter(name="A" or "B"):
   do stuff

但我似乎没有得到任何运气和所有我得到的是,我需要在组A访问的内容时,我想检查我是在A或B。

p3rjfoxz

p3rjfoxz1#

使用in

if request.user.groups.filter(name__in=["A", "B"]):

或者:

if request.user.groups.filter(name__in="AB"):

我更喜欢list版本,因为我认为它比str版本更好地传达了意图,而不需要去看文档。当然,str版本将每个字符视为一个单独的元素,因此如果您有一个像"Some Group"这样的组名,str版本将无法工作。
文件:
在给定的迭代对象中;通常是列表、元组或查询集。这不是一个常见的用例,但字符串(可迭代)是可以接受的。
示例:
Entry.objects.filter(id__in=[1,3,4])
Entry.objects.filter(headline__in=“abc”)
SQL等价物:
SELECT ... WHERE id IN(1,3,4);
SELECT ... WHERE headline IN('a','b','c');

相关问题