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.Django - Crear perfil de usuario en la creación del usuario
Tengo una aplicación 'cuentas' y mis accounts.models se ve así:
# -*- 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 se ve bien para mí, pero cuando se trata de añadir un nuevo usuario (mediante administración de Django), en lugar de tener una usuario recién creado y el perfil de usuario, me sale el siguiente error: InternalError en/admin/auth/user/add/ transacción actual se aborta, comandos ignorado hasta el final del bloque de transacción
Aquí es la parte de error de seguimiento :
/djangoProjects/lwboanova/lwboanova/apps/accounts/models.py in create_user_profile
34: UserProfile.objects.create(user=instance)
Parece un error de integridad, pero ahora no recibo la razón para ello.
Estaría genial si alguno de ustedes pudiera ayudarme con esto.
¿Tiene instalada la barra de herramientas django? Si es así, intenta deshabilitarlo para que obtengas una mejor información de error. –