在Django中,有简单的方法获取用户的组名吗
我尝试使用 django.contrib.auth.User 和 django.contrib.auth.Group 这两个功能来写代码。
for g in request.user.groups:
l.append(g.name)
但是这样做失败了,我收到了以下的 错误信息:
TypeError at /
'ManyRelatedManager' object is not iterable
Request Method: GET
Request URL: http://localhost:8000/
Exception Type: TypeError
Exception Value:
'ManyRelatedManager' object is not iterable
Exception Location: C:\p4\projects\...\users.py in permission, line 55
谢谢大家的帮助!
5 个回答
13
在编程中,有时候我们需要把一些数据从一个地方转移到另一个地方。这就像把水从一个杯子倒到另一个杯子一样。我们可以用不同的方法来做到这一点,比如使用变量、数组或者对象。
变量就像一个小盒子,可以用来存放数据。你可以把水倒进这个盒子里,然后再从盒子里倒出来。数组则是一个装了很多小盒子的盒子,你可以在里面放很多数据,就像一个装满了不同饮料的冰箱。而对象则更复杂一些,它可以存放不同类型的数据,就像一个多功能的工具箱,里面有各种各样的工具。
在编程时,我们还需要考虑数据的类型。数据类型就像是水的温度,有热水、冷水、冰水等。不同的数据类型适合不同的操作,比如数字可以用来计算,而文字则用来描述事物。
总之,理解这些基本概念可以帮助你更好地处理数据,就像学会了如何倒水一样简单。
user.groups.all()[0].name == "groupname"
40
这样更好
if user.groups.filter(name='groupname').exists():
# Action if existing
else:
# Action if not existing
142
你可以通过 request.user.groups.all()
来获取一个用户的所有组,这个方法会返回一个 QuerySet
对象。如果你想的话,可以把这个对象转换成一个列表。
for g in request.user.groups.all():
l.append(g.name)
或者在最近的 Django 版本中
l = request.user.groups.values_list('name',flat = True) # QuerySet Object
l_as_list = list(l) # QuerySet to `list`