我尝试添加描述列,并尝试在models.py中进行更改。但是,当我尝试迁移时,我收到此错误
C:\Users\Adhista Chapagain\Desktop\winerama>python manage.py makemigrations
You are trying to add a non-nullable field 'description' to wine 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 with a null value for this column)
2) Quit, and let me add a default in models.py
Select an option:
models.py代码如下所示:
from django.db import models
import numpy as np
class Wine(models.Model):
name = models.CharField(max_length=200)
images = models.ImageField(null = True, blank=True)
description = models.CharField(max_length=200)
和load_wine的代码
def save_wine_from_row(wine_row):
wine = Wine()
wine.id = wine_row[0]
wine.name = wine_row[1]
wine.images = wine_row[2]
wine.description = wine_row[3]
wine.save()
答案 0 :(得分:1)
错误告诉您正在尝试将列添加到没有默认值的现有表中,但不允许为空。所以这是一个不可能的情况 - 要么它应该有一个默认值,要么使它成为" null"在数据库中。除非您提供解决方案,否则迁移无法继续。
所以你没有多少选择:
null=True
)。default="No Description"
)只需选择一个选项,然后迁移即可。
答案 1 :(得分:0)
当您将字段添加到已存在的模型时,如果这些字段不是可空的' (即,您在该字段上没有null=True
)然后您需要为迁移提供一个默认值,以用于该模型的数据库中的所有现有行。目前还不知道是否存在,所以即使数据库为空,也必须这样做。
只需选择其中一个选项并提供默认值(即使这只是一个空字符串)。