django migration只创建一个字段的表

时间:2014-12-05 17:56:41

标签: python mysql django database-migration

我正在尝试创建名为“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。

2 个答案:

答案 0 :(得分:0)

  

name = models.CharField(max_length = 100,required = True)

我可以看到这个 字段是一个模型字段而不是表单字段 .So,required = True在这种情况下不会工作。相反使用下面文档中指定的blank = false。

You should use this

希望这可能是潜在的问题。请在评论中告诉我任何其他解释。

答案 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: 

所以我将默认参数添加为空字符串和 解决。