validacion usuarios usuario tutorial sesiones recuperar manejo hacer grupos desactivar crear contraseña como django django-registration user-profile

usuarios - recuperar contraseña django



Django-Crear perfil de usuario en la creación del usuario (3)

No debes usar:

user = models.ForeignKey(User, unique=True)

En su lugar usa esto:

from django.conf import settings .. user = models.OneToOneField(settings.AUTH_USER_MODEL)

Estoy siguiendo la documentación de Django here para lograr un objetivo simple: crear un perfil de usuario tan pronto como se cree un nuevo usuario.

Tengo una aplicación de ''cuentas'' y mis cuentas.modelos se parecen a esto:

# -*- coding: utf-8 -*- from django.db import models from django.db.models.signals import post_save from django.contrib.auth.models import User from main.models import Store class UserProfile(models.Model): GENRE_CHOICES = ( (''m'', ''Masculino''), (''f'', ''Feminino''), ) MARITAL_STATUS_CHOICES = ( (''s'', ''Solteiro''), (''c'', ''Casado''), (''d'', ''Divorciado''), (''v'', ''Viúvo''), ) user = models.ForeignKey(User, unique=True) birth_date = models.DateField() genre = models.CharField(max_length=1, choices=GENRE_CHOICES) address = models.CharField(max_length=150) postal_code_4 = models.PositiveIntegerField() postal_code_3 = models.PositiveIntegerField() locatity = models.CharField(max_length=30) marital_status = models.CharField(max_length=1, choices=MARITAL_STATUS_CHOICES) child_amount = models.PositiveSmallIntegerField() is_merchant = models.BooleanField(default=False) store = models.ForeignKey(Store, null=True) def create_user_profile(sender, instance, created, **kwargs): if created: UserProfile.objects.create(user=instance) post_save.connect(create_user_profile, sender=User)

Todo me parece bien, pero cuando intento agregar un nuevo usuario (usando django admin), en lugar de tener un usuario y un perfil de usuario recién creados , aparece el siguiente error: InternalError at / admin / auth / user / add / current transaction is abortados, los comandos ignorados hasta el final del bloque de transacción

Aquí está la parte del error de rastreo:

/djangoProjects/lwboanova/lwboanova/apps/accounts/models.py in create_user_profile 34: UserProfile.objects.create(user=instance)

Parece un error de integridad, pero no entiendo el motivo.

Sería genial si alguno de ustedes pudiera ayudarme con esto.


Sólo lo descubrí.

Olvidé agregar null=True al resto de los campos del modelo UserProfile .

Así que los campos accounts.models.UserProfile ahora se ven como:

user = models.ForeignKey(User, unique=True) birth_date = models.DateField(null=True) genre = models.CharField(max_length=1, choices=GENRE_CHOICES, null=True) address = models.CharField(max_length=150, null=True) postal_code_4 = models.PositiveIntegerField(null=True) postal_code_3 = models.PositiveIntegerField(null=True) locatity = models.CharField(max_length=30, null=True) marital_status = models.CharField(max_length=1, choices=MARITAL_STATUS_CHOICES, null=True) child_amount = models.PositiveSmallIntegerField(null=True) is_merchant = models.BooleanField(default=False) store = models.ForeignKey(Store, null=True)

... y todo está funcionando como es debido!

Saludos por intentar ayudar a Ashray ^^


def create_profile(sender,**kwargs ): if kwargs[''created'']: user_profile=UserProfile.objects.create(user=kwargs[''instance'']) post_save.connect(create_profile,sender=User)

Creo que esto te ayudará.