在我的models.py中,我使用这些代码来扩展两个字段:
User.add_to_class('bio', models.TextField(blank=True))
User.add_to_class('about', models.TextField(blank=True))
但是当我创建一个用户时:
user = User.objects.create_user(username=self.cleaned_data['username'], \
email=self.cleaned_data['email'],password=self.cleaned_data['password1'])
有这样的错误:
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")
我检查了django创建的sql,我发现这很奇怪:
'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)'
有两个关于和bio。但在Mysql表中只有一个'about'和'bio'。 另一方面,在这种情况下,models.py将运行两次,我不知道。
我不知道为什么。请帮助我!
答案 0 :(得分:3)
这是not a good way to store additional user information,原因有很多,正如James Bennett在链接线程中指出的那样。你得到奇怪的SQL输出并努力调试它也就不足为奇了。相反,使用相关的个人资料模型可以让自己轻松自如。