我正在尝试创建名为“store”的django应用程序,但是当我执行./manage.py makemigration store
然后./manage.py migrate store
时,在phpmyadmin中查看此表时,迁移正确应用它只有一个字段。< / p>
我的模型代码如下:
from django.db import models
class Module(models.Model):
class Meta:
verbose_name = "Module"
verbose_name_plural = "Modules"
def __unicode__(self):
return self.name
def __str__(self):
return self.name
name = models.CharField(max_length=100, required=True)
version = models.CharField(max_length=10,default='0.1')
description = models.CharField(max_length=500,default="No description")
,./manage.py sqlmigrate store
的结果是:
BEGIN;
CREATE TABLE `store_module` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY);
COMMIT;
我在python 2.7和mysql数据库上使用django 1.7。
答案 0 :(得分:0)
name = models.CharField(max_length = 100,required = True)
我可以看到这个 字段是一个模型字段而不是表单字段 .So,required = True在这种情况下不会工作。相反使用下面文档中指定的blank = false。
希望这可能是潜在的问题。请在评论中告诉我任何其他解释。
答案 1 :(得分:0)
经过多次试验后我找到了答案,问题是:
You are trying to add a non-nullable field 'name' to module without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
Select an option:
所以我将默认参数添加为空字符串和 解决。