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