He extendido el modelo de usuario de Django utilizando un perfil de usuario personalizado llamado UserExtension
. Está relacionado con el usuario a través de una relación ForeignKey única, que me permite editarlo en el administrador en una forma en línea. estoy usando una señal para crear un nuevo perfil para cada nuevo usuario:Django: UserProfile con clave externa única en Django Admin
def create_user_profile(sender, instance, created, **kwargs):
if created:
try:
profile, created = UserExtension.objects.get_or_create(user=instance)
except:
pass
post_save.connect(create_user_profile, sender=User)
(tal como se describe aquí, por ejemplo: Extending the User model with custom fields in Django) El problema es que, si se crea un nuevo usuario a través de la administración, Obtengo una IntegritiyError al guardar "la columna user_id no es única". Parece que la señal no se llama dos veces, pero supongo que el administrador está tratando de guardar el perfil DESPUÉS? ¡Pero necesito la señal de creación si creo un nuevo usuario en otras partes del sistema!
¿Podemos ver su gestor get_or_create? – Brant
¡Es el administrador predeterminado de django! –