【问题标题】:django migration creates table with only one fielddjango 迁移创建只有一个字段的表
【发布时间】:2015-02-03 23:29:50
【问题描述】:

我正在尝试创建一个名为 'store' 的 django 应用程序,但是当我执行 ./manage.py makemigration store 然后 ./manage.py migrate store 在 phpmyadmin 中查看此表时迁移正确应用它只有一个字段。

我的模型代码如下:

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。

【问题讨论】:

  • 朋友,看来字段声明不是您模型的一部分。检查您的身份。如果仍然无法正常工作,请附上您正在使用的 ide 中的模型类的屏幕截图... .~谢谢
  • 如果你的意思是我在写这个问题时手动修复的缩进,谢谢你通知我。还是您的意思是像这样声明它们:self.name = CharField()?请解释一下。
  • 看这里的代码似乎绝对没问题。但是(如果我错了,请纠正我)看起来你的字段不是模型类的一部分。这就是为什么 django 没有把它们放在迁移中。这可能是原因之一。但如果仍然没有,请附上模型类的屏幕截图。
  • 仍然不明白你的观点我试图像本教程一样编写模型:link 无论如何我无法在这里上传图片,因为我的积分不够所以我上传了它在 G+ link

标签: python mysql django database-migration


【解决方案1】:

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

正如我所见,这个字段是模型字段而不是表单字段。因此,在这种情况下 required=True 不起作用。而是使用空白=false 如下面的文档中所指定。

You should use this

希望这可能是潜在的问题。请让我知道 cmets 中的任何其他解释。

【讨论】:

  • 不幸的是,同样的结果。 python 本身允许关键字参数。除此之外,这不是翻译问题。
【解决方案2】:

经过多次尝试,我找到了答案,问题是:

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: 

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

【讨论】:

    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 2021-01-21
    • 2017-09-15
    • 2010-12-22
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多