【发布时间】:2020-08-25 01:20:08
【问题描述】:
我正在使用 Django 3.0.5,我正在尝试在表中创建一个新列。
表格如下所示:
class VacationModel(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
emp_id = models.IntegerField()
email = models.EmailField()
from_date = models.DateField()
to_date = models.DateField()
reason = models.TextField()
time_sent = models.DateTimeField("date sent")
req_approved = models.BooleanField(default=False, null=True)
req_denied = models.BooleanField(default=False, null=True)
# daysoff_given = models.IntegerField()
def __str__(self):
return self.emp_id
新列将是daysoff_given。我尝试添加此列,在运行 python manage.py makemigrations 后出现错误提示 django.db.utils.OperationalError: no such column
我尝试遵循其他一些答案,并删除了在 migrations 文件夹中进行的迁移,而不删除 __init__.py 文件。再次运行makemigrations 后出现同样的错误,然后我删除了整个模型并制作了一个新模型。
我认为我的数据库已损坏,但有没有实际的方法可以避免这种情况,因为它已经发生了两次。
每当我尝试添加新列时,它总是会抛出该错误并且我无法继续。我该如何解决这个问题?
【问题讨论】:
-
“我删除了在
migrations文件夹中进行的迁移”——为什么这么多人急于对他们的迁移进行核对?这是一个剧烈的步骤,实际上应该从不需要。我希望您保留一份副本,以便您可以将它们放回去。 -
您在创建新迁移后是否使用
python manage.py migrate应用新迁移? -
@Chris 是的,我在创建模型后应用了新的迁移。所做的唯一更改是
daysoff_given字段,问题发生在运行makemigrations -
“运行
makemigrations之后”是什么意思?作为运行makemigrations的一部分,您是否收到此错误?如果不是,“之后”是什么意思?是什么导致它出现?错误的完整追溯是什么? -
尝试删除迁移和数据库,然后进行迁移和迁移。它应该可以工作
标签: python python-3.x django django-models