Django - Créer un profil d'utilisateur sur la création d'un utilisateur
Je suis documentation de Django ici afin d'atteindre un objectif simple: Créer un profil utilisateur dès qu'un nouvel utilisateur est créé.
J'ai un 'comptes' application et de mes comptes.modèles ressemble à ceci:
# -*- 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)
Tout semble parfait pour moi, mais lorsque je tente d'ajouter un nouvel utilisateur (à l'aide de django admin), au lieu d'avoir un utilisateur nouvellement créé et le profil d'utilisateur, j'obtiens l'erreur suivante:
InternalError à /admin/auth/user/add/
transaction en cours est annulée, les commandes ignoré jusqu'à la fin de la transaction de bloc
Voici l'erreur traceback partie:
/djangoProjects/lwboanova/lwboanova/apps/accounts/models.py in create_user_profile
34: UserProfile.objects.create(user=instance)
Il semble comme une erreur d'intégrité, mais je ne suis pas la cause.
Serait génial si tout de toi pourrait me donner un peu d'aide sur ce.
- Avez-vous le django de la barre d'outils est installé ? Si oui, essayez de désactiver la fonction de sorte que vous obtenez la meilleure erreur info.
Vous devez vous connecter pour publier un commentaire.
Juste pensé à elle.
J'ai oublié d'ajouter
null=True
pour le reste deUserProfile
modèle de champs.De sorte que le
accounts.models.UserProfile
champs ressemble maintenant à:...et tout fonctionne comme prévu!
Bravo pour essayer de les aider, Ashray ^^
Vous ne devriez pas utiliser:
Au lieu d'utiliser ceci:
AUTH_USER_MODEL
paramètre si vous souhaitez remplacer la génération de modèle d'Utilisateur avec votre propre.settings.AUTH_USER_MODEL
est un moyen de protéger ce morceau de code à partir d'un bug si codé en durUser
n'est plus le modèle dans l'avenir.Je pense que cela va vous aider.