Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Acceder a la tabla auth_user_groups

Estas en el tema de Acceder a la tabla auth_user_groups en el foro de Python en Foros del Web. Hola, buen día. Necesito ayuda para poder consultar desde Django la tabla auth_user_groups, he buscado, leído pero nada especifico de la tabla que menciono, solo ...
  #1 (permalink)  
Antiguo 11/11/2015, 10:16
Avatar de santiagopm84  
Fecha de Ingreso: marzo-2015
Mensajes: 23
Antigüedad: 9 años, 1 mes
Puntos: 0
Acceder a la tabla auth_user_groups

Hola, buen día.

Necesito ayuda para poder consultar desde Django la tabla auth_user_groups, he buscado, leído pero nada especifico de la tabla que menciono, solo como acceder a la tabla auth_user, auth_group y sí logro consutar esas tablas, incluso desde User excluyo el registro ciudadano de la tabla auth_group:

Código Python:
Ver original
  1. usuarios = User.objects.filter(is_superuser=False).exclude(groups__name='ciudadano').order_by('username')

Esto me trae a todos los usuarios que no pertenecen a "ciudadano" pero hay usuarios a quienes no se les ha asignado a un grupo y también los trae y es lo que no deseo.

Revisando las tablas en la auth_user_group se guardan los id's de la tabla auth_user y auth_group; Eso es lo que deseo mostrar, solo los usuarios que están en esa tabla.

Espero me haya explicado y muchas gracias por su ayuda.
  #2 (permalink)  
Antiguo 12/11/2015, 16:13
Avatar de santiagopm84  
Fecha de Ingreso: marzo-2015
Mensajes: 23
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Acceder a la tabla auth_user_groups

¿Alguna sugerencia?
  #3 (permalink)  
Antiguo 14/11/2015, 12:42
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Acceder a la tabla auth_user_groups

No ocupas acceder a esa tabla, django te arrojando el resultado que estas pidiendo.

Hay 2 formas de hacer esto:

1. Excluye tu grupo haz un annotate count de los grupos por usuario y filtra los que tienen grupos.
2. Haz un query de todos los usuarios que se encuentren en alguno de los grupos excepto el grupo que te interesa.
  #4 (permalink)  
Antiguo 23/11/2015, 19:43
Avatar de santiagopm84  
Fecha de Ingreso: marzo-2015
Mensajes: 23
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Acceder a la tabla auth_user_groups

Cita:
Iniciado por razpeitia Ver Mensaje
No ocupas acceder a esa tabla, django te arrojando el resultado que estas pidiendo.

Hay 2 formas de hacer esto:

1. Excluye tu grupo haz un annotate count de los grupos por usuario y filtra los que tienen grupos.
2. Haz un query de todos los usuarios que se encuentren en alguno de los grupos excepto el grupo que te interesa.


Bueno, la solución fue elegir la segunda opción que amablemente razpeitia sugirió y quedó de la siguiente manera:

Código Python:
Ver original
  1. sql_usuarios = """select u.id, u.username,u.first_name,u.last_name from auth_user_groups aug
  2.    join auth_user u on u.id = aug.user_id
  3.    join auth_group ag on ag.id = aug.group_id
  4.    where not ag.name ='ciudadano' and u.is_superuser = False and u.is_active = True
  5.    group by u.id ,username, first_name, last_name, email,is_active
  6.    order by u.username;"""
  7.  
  8. usuarios = User.objects.raw(sql_usuarios)

Código Python:
Ver original
  1. return render(request,'mesa/template.html',
  2.                               {'form': form, 'usuarios': usuarios},
  3.                               context_instance=RequestContext(request))


La primera no me quedó claro, leí y leí pero no entendí jeje.

Gracias por la ayuda como siempre.

Última edición por santiagopm84; 23/11/2015 a las 19:50

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:38.