关于python 2.7:django -OperationalError:(1054,“字段列表’中的未知列’registration_register.mobilexnumber’”)

django -OperationalError: (1054, “Unknown column 'registration_register.mobilexnumber' in 'field list'”)

我对姜戈和Python都不熟悉。我正试图创建一个注册和登录表单。测试注册页面只与usernameemailpassword一起工作。当我试图为我的注册表单添加firstnamelastname字段时,没有问题,但是当我添加一个新字段mobilexnumber时,当我转到管理页面时,我得到以下错误

操作错误在/admin/registration/register/

(1054,"Unknown column 'registration_register.mobilexnumber' in 'field list'")

型号.py

1
2
3
4
5
6
7
8
class Register(models.Model):
    username = models.CharField(max_length=30)
    email = models.EmailField(max_length=254)
    password = models.CharField(max_length=30)
    firstname = models.CharField(max_length=50)
    lastname = models.CharField(max_length=50)
    mobilexnumber = models.CharField(max_length=50)
    samplefld = models.CharField(max_length=30)

表格.py

1
2
3
4
5
6
7
8
class RegForm(forms.ModelForm):

class Meta:
    model = Register
    fields = ('username', 'email', 'password', 'firstname', 'lastname','mobilexnumber', 'samplefld', )
    widgets = {
        'password': forms.PasswordInput(),
    }

别管samplefld。它被用于一些错误检查。即使没有这个字段,我也会得到同样的错误。

我使用以下内容:

Django 1.9版

python 2.7.11版

Pycharm 5.0.2版

MySQL数据库

谢谢!


经过几次搜索,我找到了一个比较好的解决方案。我遵循了这个问题中给出的所有步骤。之后,正如@eyal建议的那样,我从mysql命令行进行了一个原始的mysql查询,添加了特定的列,它就工作了!

不是最好的方法,但它有效。


听起来您在没有进行相应数据库模式更改的情况下对模型进行了更改。使用django 1.9运行makemigrationsmigrate。这是文档,您将看到与此类似的输出:

1
2
3
4
5
6
7
8
$ manage.py makemigrations
Migrations for 'register':
  0002_register_mobilexnumber.py:
    - Add field mobilexnumber to register
$ manage.py migrate
Running migrations:
  Rendering model states... DONE
  Applying register.0002_register_mobilexnumber... OK


你应该用新的"mobilexnumber"列更新你的mysql数据库。(或运行syncdb)

1
alter table register add column `mobilexnumber` varchar(50) NULL;