2009-09-07 5 views
1

Dans mon models.py, je utilisateur ces codes à mesure deux champs:une erreur de « User.add_to_class » pour étendre mon utilisateur, je ne sais pas pourquoi

User.add_to_class('bio', models.TextField(blank=True)) 
User.add_to_class('about', models.TextField(blank=True)) 

Mais quand je creat un utilisateur:

user = User.objects.create_user(username=self.cleaned_data['username'], \ 
      email=self.cleaned_data['email'],password=self.cleaned_data['password1']) 

il y a une erreur comme ceci:

ProgrammingError at /account/register/ 
(1110, "Column 'about' specified twice") 

Request Method: POST 
Request URL: http://127.0.0.1:8000/account/register/ 
Exception Type: ProgrammingError 
Exception Value: (1110, "Column 'about' specified twice") 

un je vérifie sql que django creats, je trouve qu'il est très étrange:

'INSERT INTO `auth_user` (`username`, `first_name`, `last_name`, `email`, `password`, `is_staff`, `is_active`, `is_superuser`, `last_login`, `date_joined`, `about`,'bio','about','bio') VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)' 

Il y a deux environ et bio. Mais dans la table Mysql il n'y a qu'un 'environ' et 'bio'. D'autre part, dans ce cas, le models.py sera exécuté deux fois, je ne sais pas.

Je ne sais pas pourquoi.Veuillez m'aider!

+1

Est-ce que 'models.py' est exécuté deux fois? Pourriez-vous garder le code 'User.add_to_class'? –

Répondre

2

Ceci est not a good way to store additional user information, pour un certain nombre de raisons, comme le souligne James Bennett dans le thread lié. Il n'est pas surprenant que vous obteniez une sortie SQL bizarre et que vous ayez du mal à le déboguer. Gardez les choses faciles pour vous en utilisant un modèle de profil associé à la place.

+0

Intéressant, merci pour le lien vers googlegroup. Je me souviens que quand j'ai voulu hériter de l'utilisateur, j'avais quelques incompatibilités, donc j'ai arrêté sur la méthode de profil fonctionnant bien. – Kee

Questions connexes