【问题标题】:Getting error in django at the time of migration迁移时在 django 中出错
【发布时间】:2020-05-16 15:44:04
【问题描述】:
from django.db import models
class Note(models.Model):
    subject=models.CharField(max_length = 100)

    My_Thought= models.TextField(blank = False)

在迁移时,执行此命令时出现以下错误:

python manage.py makemigrations

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

你知道我没有添加id,因为它是django自动生成的,那我为什么会得到这个?

【问题讨论】:

  • 将 default="" 或 null=True 添加到您刚刚迁移后添加到模型中的新字段。
  • 如果是新项目,或者只是尝试删除现有的迁移文件和数据库

标签: python django python-3.x django-models django-forms


【解决方案1】:

您的代码有效,问题不在这里,我只是尝试在一个空的应用程序中创建模型,它工作正常!

【讨论】:

  • 这没有帮助。 OP 正在将更改应用到已经存在的数据库,而不是新的空应用程序。
  • @AlanHoover 它给模型中不包含的id 字段提供错误,预先存在的迁移中存在错误(OP 应该手动检查数据库,我认为 OP 损坏了PK场)
【解决方案2】:

当 Django 尝试修改现有模型以使其需要数据时,就会发生这种情况。

只需将您的代码更改为:

from django.db import models

class Note(models.Model):
    subject=models.CharField(max_length = 100, default="something or leave empty")

    My_Thought= models.TextField(blank = False, default="")

如果错误不是来自这个 sn-p,那么可能你有另一个模型抛出这个错误。

【讨论】:

    猜你喜欢
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多