J'ai étendu l'objet utilisateur en utilisant le 1.Méthode 4x en ajoutant un modèle de "profil" personnalisé, puis en l'instanciant lors de l'enregistrement / la création de l'utilisateur. Au cours de mon processus d’inscription, je souhaite ajouter des informations supplémentaires au modèle de profil. La vue est restituée avec succès, mais le modèle de profil n’est pas enregistré. Code ci-dessous:
user = User.objects.create_user(request.POST["username"], request.POST["email"], request.POST["password"])
user.save()
profile = user.get_profile()
profile.title = request.POST["title"]
profile.birthday = request.POST["birthday"]
profile.save()
Réponses:
6 pour la réponse № 1mettre à jour votre models.py avec ce code
from django.db.models.signals import post_save
def create_user_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
maintenant quand tu fais
user.save ()
il créera automatiquement un objet de profil. alors vous pouvez faire
user.profile.title = request.POST["title"]
user.profile.birthday = request.POST["birthday"]
user.profile.save()
J'espère que ça aide.
1 pour la réponse № 2
utilisateur est une instance du modèle utilisateur. Et il semble que vous essayiez d'obtenir une instance qui existe déjà. Cela dépend de ce que vous retournez de user.get_profile. Vous devez lancer l'instance UserProfile. La manière la plus simple pourrait être la suivante:
user_profile = UserProfile.objects.create(user=user)
user_profile.title = request.POST["title"]
...
.
.
user_profile.save()