我是django和python的新手。我正在尝试创建注册和登录表单。测试注册页面仅适用于username
,email
和password
。当我尝试为我的注册表单添加firstname
,lastname
字段时没有问题但是当我添加新字段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
谢谢!
答案 0 :(得分:0)
你应该使用新列'mobilexnumber'更新你的mysql数据库 (或运行syncdb)
alter table register add column `mobilexnumber` varchar(50) NULL;
答案 1 :(得分:0)
听起来您已经对模型进行了更改,而没有进行相应的数据库架构更改。使用Django 1.9,运行makemigrations
和migrate
。这是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查询以添加特定列,它可以工作!
不是最好的方式,但它确实有效。