【问题标题】:Model using inheritance: You are trying to add a non-nullable field 'id' to typemod without a default;使用继承的模型:您正在尝试在没有默认值的情况下向 typemod 添加不可为空的字段“id”;
【发布时间】:2017-10-09 07:34:12
【问题描述】:

我在我的 models.py 中使用模型继承。这是我的代码:

class Email(models.Model):
    stuff = models.CharField(max_length=40, blank=True,
                             null=True, default="")
class TypeMod(Email):
    pass

当我运行 makemigrations 时,虽然我已为电子邮件模型中的所有字段设置了默认值,但仍收到以下消息:

您正在尝试将不可为空的字段“id”添加到 typemod 而没有 默认;我们不能那样做(数据库需要一些东西来填充 现有行)。 请选择一个修复: 1) 现在提供一次性默认值(将在所有现有行上设置 此列的值为空) 2)退出,让我在models.py中添加一个默认值

我做错了什么?!

【问题讨论】:

  • 请仔细阅读。没有错误

标签: python django database inheritance models


【解决方案1】:

它不一定与流浪者有关。我使用了本机 Linux 机器并得到了相同的消息。我的解决方案是删除现有的迁移。

【讨论】:

    【解决方案2】:

    嗯,我想通了!对于任何有同样问题的人,我正在使用 vagrant 并且这个项目在 vm 上运行。所以问题是父模型之前不是抽象的,所以在数据库中为父模型制作了一个表。所以当我切换到抽象时,桌子还在那儿。我解决它的方法是运行“vagrant distroy”并重新启动虚拟机。

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 2020-07-12
      • 2020-06-03
      • 2016-01-18
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2021-08-25
      相关资源
      最近更新 更多