Python django不可空字段

Python django不可空字段,python,django,django-models,Python,Django,Django Models,这是我的模特 class Product(models.Model): product_id = models.AutoField product_name = models.CharField(max_length=50) category = models.CharField(max_length = 50, default="") price = models.ImageField(default=0) sub_category

这是我的模特

class Product(models.Model):
    product_id = models.AutoField
    product_name = models.CharField(max_length=50)
    category = models.CharField(max_length = 50, default="")
    price = models.ImageField(default=0)
    sub_category = models.CharField(max_length = 50,default="")
    desc = models.CharField(max_length=300)
    pub_date = models.DateField()
    image = models.ImageField(upload_to="shop/images", default="")
下面是我的底线。我不知道这是警告还是错误: 您试图在没有默认值的情况下向产品添加不可为空的字段“发布日期”;我们不能这样做(数据库需要一些东西来填充现有的行)


这实际上意味着什么???

您已经构建了迁移,在迁移中您为
产品
表创建了表。因此,该表可能已有记录

现在您要添加一个新列,这意味着您需要为现有记录填充该列。您没有指定,因此Django不能将其用作值

对于没有默认值的字段,默认情况下它将使用
None
/
NULL
作为值,但此处的
pub_date
不是可为空的字段

因此,这意味着Django不知道在这里做什么。通常,Django将提出两种解决方案:

第一选择 因此,您可以通过写入1(并输入)来选择第一个选项,然后可以输入一个表达式,指定使用什么作为默认值,例如
时区。现在
作为现有记录的默认值,而不是新记录的默认值:

Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now
Type 'exit' to exit this prompt
>>> timezone.now  # Enter
您还可以使用自动将当前日期用作值,并使字段不可编辑:

class Product(models.Model):
    # …
    pub_date = models.DateField(auto_now_add=True)
    # …
类产品(models.Model):
# …
pub\u date=models.DateField(auto\u now\u add=True)

#…
您已经构建了迁移,您可以在迁移中为
产品
表创建表。因此,该表可能已有记录

现在您要添加一个新列,这意味着您需要为现有记录填充该列。您没有指定,因此Django不能将其用作值

对于没有默认值的字段,默认情况下它将使用
None
/
NULL
作为值,但此处的
pub_date
不是可为空的字段

因此,这意味着Django不知道在这里做什么。通常,Django将提出两种解决方案:

第一选择 因此,您可以通过写入1(并输入)来选择第一个选项,然后可以输入一个表达式,指定使用什么作为默认值,例如
时区。现在
作为现有记录的默认值,而不是新记录的默认值:

Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now
Type 'exit' to exit this prompt
>>> timezone.now  # Enter
您还可以使用自动将当前日期用作值,并使字段不可编辑:

class Product(models.Model):
    # …
    pub_date = models.DateField(auto_now_add=True)
    # …
类产品(models.Model):
# …
pub\u date=models.DateField(auto\u now\u add=True)

#…
错误消息有什么不清楚的地方?它告诉我-(数据库需要一些东西来填充现有行)。错误消息有什么不清楚的地方?它告诉我-(数据库需要一些东西来填充现有行)。