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"