tutorial theme template password createsuperuser create python django django-admin

python - theme - ¿hay un simple para obtener los nombres de grupo de un usuario en django



django-admin command (4)

Intenté seguir el Código con la ayuda de django.contrib.auth.User y django.contrib.auth.Group

for g in request.user.groups: l.append(g.name)

Pero eso falló y recibí el siguiente error :

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

¡Gracias por cualquier ayuda!


Esta es mejor

if user.groups.filter(name=''groupname'').exists(): # Action if existing else: # Action if not existing


Probablemente sea un poco tarde (me uní a ), pero para cualquiera que busque en Google a principios de 2018, puede usar el hecho de que el objeto django Groups (por defecto) viene con los siguientes campos (no exhaustivos, solo los importantes) ):

ID, nombre, permisos, usuario (puede tener muchos usuarios; ManyToMany)

Tenga en cuenta que un grupo puede estar formado por muchos usuarios, y un usuario puede ser miembro de muchos grupos. Así que simplemente puede filtrar el modelo de Grupos de django para la sesión de usuario actual (asegúrese de haber agregado los grupos relevantes y asignado al usuario a su grupo / s):

'''''' This assumes you have set up django auth properly to manage user logins '''''' # import Group models from django.contrib.auth.models import Group # filter the Group model for current logged in user instance query_set = Group.objects.filter(user = request.user) # print to console for debug/checking for g in query_set: # this should print all group names for the user print(g.name) # or id or whatever Group field that you want to display


for g in request.user.groups.all(): l.append(g.name)

o con django reciente

l = request.user.groups.values_list(''name'',flat=True)


user.groups.all()[0].name == "groupname"