django -OperationalError:(1054,“字段列表中的未知列'registration_register.mobilexnumber'”)

时间:2015-12-31 16:31:42

标签: django python-2.7

我是django和python的新手。我正在尝试创建注册和登录表单。测试注册页面仅适用于usernameemailpassword。当我尝试为我的注册表单添加firstnamelastname字段时没有问题但是当我添加新字段mobilexnumber时,当我转到管理页面时,我会得到以下内容错误

/ strong / registration / register / 中的 OperationalError

  

(1054,“字段列表”中的“未知列'registration_register.mobilexnumber'”)

models.py

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)

forms.py

class RegForm(forms.ModelForm):

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

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

我使用以下内容:

Django ver 1.9

Python ver 2.7.11

Pycharm ver 5.0.2

mySQL as database

谢谢!

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

听起来您已经对模型进行了更改,而没有进行相应的数据库架构更改。使用Django 1.9,运行makemigrationsmigrate。这是documention,你会看到与此类似的输出:

$ 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

答案 2 :(得分:0)

经过几次搜索,我找到了一个不错的解决方案。我按照Question中给出的所有步骤进行了操作。之后,@ Eyal建议我从mySQL命令行创建原始mySQL查询以添加特定列,它可以工作!

不是最好的方式,但它确实有效。