Pregunta

Estoy usando (y aprendiendo) django en mi producto más nuevo, y acabo de instalar y comencé a usar registro de django aplicación para permitir que mis usuarios se registren automáticamente.

Todo funciona bien, pero estoy pensando en asignar cada nuevo usuario a un grupo específico (ya creado), por lo que puedo "separar" a los administradores de los usuarios normales.

¿Cómo puedo hacer esto? La documentación sobre esta aplicación es horrible, en mi opinión.

No creé ningún modelo o configuración para comenzar a usar la aplicación Django-Registration.

¿Fue útil?

Solución

Para comenzar, no soy un experto en el Dr. (registro de Django) y en realidad solo lo revisé porque lo mencionó en su pregunta. Entonces, si alguien más tiene una mejor respuesta, envíelo. De todos modos, aquí va.

Noté que la forma en que se crean los usuarios (o "perfiles" como se llama DR) en la función create_inactive_user ubicada en registro.models.registrationManager. Entonces, en esta función después:

new_user.is_active = False
new_user.save()

Podrías agregar algo como:

default_group = Group.objects.get(name=WHATEVER_THE_GROUP_NAME_IS)
user_group, is_created = UserGroup.get_or_create(user=new_user)
user_group.group = default_group
#user_group.groups.add(default_group)   # Django ver. 1.7+
user_group.save()

Probablemente podría prescindir de Get_or_Create, ya que no creo que pueda crear más de un usuario con el mismo nombre de usuario, pero prefiero estar seguro de lo que curar.

Este método hará que edite los archivos DR (que pueden no ser lo mejor) junto con la codificación de ciertas cosas (como el nombre de grupo predeterminado), pero debería ser un buen punto de salida.

PD. El nombre de grupo predeterminado podría ser una variable ubicada en el archivo settings.py, lo que lo haría más accesible y bonito. Ejemplo:

settings.py:
DEFAULT_GROUP_NAME = 'YOUR GROUP NAME'

registration/models.py:
default_group = Group.objects.get(name=settings.DEFAULT_GROUP_NAME)

De todos modos, espero que eso ayude.

Otros consejos

Terminé haciendo un tenedor para esto, ya que esto me estaba volviendo loco.

https://github.com/kcunning/django-inscration

Básicamente, agregue lo siguiente a su archivo settings.py:

Registration_default_group_name = "Groupname"

Cualquier usuario agregado a través del módulo de registro recibirá ese grupo tras la creación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top