无法在 django 中进行迁移

问题描述 投票:0回答:2

我无法在 Django 中迁移此模型

class ApprovedCourse(models.Model):
    course_name = models.CharField(max_length=50)
    provider_college = models.ManyToManyField('processes.College', related_name="provider_college")
    prerequisites = models.ManyToManyField('ApprovedCourse', related_name="courses_that_need_this_course",null=True)
    both_needs = models.ManyToManyField('ApprovedCourse', related_name="courses_required_for_this_course",null=True)
    number_of_course_units = models.IntegerField()
    course_type = models.CharField(max_length=50)


class SemesterCourse(models.Model):
    approved_course=models.ForeignKey('ApprovedCourse', on_delete=models.CASCADE , null=True, related_name='approved_course')
    class_day_and_time = models.CharField(max_length=50)
    exam_date_and_time = jmodels.jDateTimeField()
    exam_location = models.CharField(max_length=50)
    course_professor = models.ForeignKey('users.Professor', on_delete=models.SET_NULL, null=True, related_name="professor_course")
    course_capacity = models.IntegerField()
    current_semester = models.ForeignKey('processes.Semester', on_delete=models.SET_NULL,  null=True, related_name="semester_course")

当我想添加approved_course字段并且

makemigration
时,它会显示此消息

请选择修复:

  1. 立即提供一次性默认值(将在该列具有空值的所有现有行上设置)
  2. 退出并在 models.py 中手动定义默认值。 选择一个选项:

如何解决?

django django-models django-migrations
2个回答
0
投票

在 IMO 中,这是 Django 和 SQL 数据库中的未命名规范。 Django 无法在不指定默认值的情况下自行添加新的不可为空字段。 即使数据库中已经没有行,只要之前已经对模型进行了迁移,添加新字段到模型并进行新的迁移将需要为添加的字段指定一次性默认值,或者您可以直接在代码中设置默认值。

实际上为此提出了一张票,但以“清理/优化(不会修复)”的解决方案结束了


-2
投票

您可以使用以下命令将创建的模型迁移到后台管理:

python manage.py makemigration
python manage.py migrate
© www.soinside.com 2019 - 2024. All rights reserved.