Impossible de créer un super utilisateur Django
Je suppose que c'est parce que mon super-utilisateur dépend de l'Utilisateur qui n'a pas encore de données.
Mon modèle ressemble
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class UserProfile(models.Model):
user = models.OneToOneField(User) # required
location = models.CharField(max_length=100)
age = models.PositiveIntegerField(blank=True,null=True)
contribution_points = models.PositiveIntegerField()
#acheivements = models.ManyToMany()
def create_user_profile(sender,instance,created,**kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
Cependant, je me retrouve avec l'erreur suivante:
django.db.utils.DatabaseError: (1146, "Table 'savory_db.login_userprofile' doesn't exist")
bien qu'ayant couru syncdb
Mon modèle ont tout contradictoire champs qui serait la cause de cette erreur. Devrait UserProfile pas être appliqué pour le super-utilisateur? Comment dois-je faire pour éviter cela?
source d'informationauteur user1431282
Vous devez vous connecter pour publier un commentaire.
Le Mar 23, 2011, à 4:25 AM, Malcolm Boîte a écrit:
De ne pas créer le super-utilisateur lors de syncdb, vous le profil de l'utilisateur table n'existe pas.
Vous devez avoir un créer du signal sur l'admin qui crée un profil utilisateur, cela ressemble
comme il ne
La procédure que vous souhaitez utiliser pour initialiser la base de données est:
Référence : https://groups.google.com/forum/?fromgroups=#!topic/django-users/sBXllxrIdMc
Je viens de tomber sur cette même question - un modèle de profil qui est créé par le biais d'une migration, et d'un gestionnaire de signal qui se brise lorsque le super-utilisateur est créé à l'aide de la première
syncdb
.Ma solution est la suivante.
Tout d'abord, gérer le cas où la table n'existe pas encore. C'est un peu moche, et peut-être trop drastique (peut masquer d'autres erreurs)
Ensuite, exécutez un gestionnaire lorsque les migrations finition:
Ce sera bien sûr également exécuter lorsque vous faites des migrations, la création de profils pour les utilisateurs qui n'en ont pas. Pour moi, ce n'est pas un problème.