Django - 列 "imageLink" 中的空值违反了非空约束
Django - Null value in column "imageLink" violates not-null constraint
我一直在尝试设置将表单(旨在上传图片)上传到数据库的可能性,该数据库链接到列表中的其他数据,但每次我尝试 运行它,它不会忽略假定为图片的空值。我花了整整一天半的时间阅读并试图解决这个问题,但是关于这个主题的文档并不多。我是否缺少需要将文件上传到的位置 and/or 如果列表中没有添加照片,有没有办法忽略空值?
错误信息:
IntegrityError at /createproduct/
null value in column "imageLink" violates not-null constraint
DETAIL: Failing row contains (81, Comedy, Comic, DC, 5, Engels, 5, Henk, haHAA, null, 808, 2000-04-02).
表单片段 1:
class PRegistrationForm(ModelForm):
ProductsEntry = Products(prodNum=products.id, prodName=products.prodName, prodPrice=products.prodPrice,
prodStock=products.prodStock)
ProductsEntry.save()
ProdData = ProductDetails(prodNum=products(prodNum=products.id), genre=products.genre,
type=products.type, publisher=products.publisher,
totalPages=products.totalPages, language=products.language,
rating=products.rating, author=products.author, desc=products.desc,
imageLink=products.imageLink, pubDatum=products.pubDatum)
ProdData.save()
if commit:
products.save()
return products
表单片段 2:
class ProductDetails(forms.Form):
products_prodName = forms.CharField(required=True, max_length=200)
products_prodPrice = forms.DecimalField(required=True, max_digits=5, decimal_places=2)
products_prodStock = forms.IntegerField(required=True, max_value=5000, min_value=1)
products_genre = forms.CharField(required=False, max_length=15)
products_type = forms.CharField(required=False, max_length=15)
products_publisher = forms.CharField(required=True, max_length=30)
products_totalPages = forms.IntegerField(required=True, max_value=2000, min_value=1)
products_language = forms.CharField(required=False, max_length=25)
products_rating = forms.IntegerField(required=False, max_value=5, min_value=1)
products_author = forms.CharField(required=True, max_length=30)
products_desc = forms.CharField(required=True, max_length=2000)
products_imageLink = forms.FileField(allow_empty_file=True, required=False)
products_pubDatum = forms.DateField(required=False)
def __init__(self, *args, **kwargs):
super(ProductDetails, self).__init__(*args, **kwargs)
self.fields['products_prodName'].label = "Titel:"
self.fields['products_prodPrice'].label = "Prijs:"
self.fields['products_prodStock'].label = "Quantiteit:"
self.fields['products_genre'].label = "Genre:"
self.fields['products_type'].label = "Type:"
self.fields['products_publisher'].label = "Uitgever:"
self.fields['products_totalPages'].label = "Bladzijden:"
self.fields['products_language'].label = "Taal:"
self.fields['products_rating'].label = "Score:"
self.fields['products_author'].label = "Schrijver:"
self.fields['products_desc'].label = "Beschrijving:"
self.fields['products_imageLink'].label = "Foto:"
self.fields['products_pubDatum'].label = "Uitgeefdatum:"
型号:
class Products(models.Model):
class Meta:
verbose_name_plural = "Products"
prodNum = models.IntegerField(primary_key=True)
prodName = models.CharField(max_length=200)
prodPrice = models.DecimalField(max_digits=5, decimal_places=2)
prodStock = models.IntegerField()
def __str__(self):
return (str(self.prodNum))
class ProductDetails(models.Model):
class Meta:
verbose_name_plural = "Product details"
prodNum = models.ForeignKey(Products, db_column='prodNum')
genre = models.CharField(max_length=50)
type = models.CharField(max_length=50, default="Comic")
publisher = models.CharField(max_length=50)
totalPages = models.IntegerField()
language = models.CharField(max_length=25, default="Engels")
rating = models.IntegerField()
author = models.CharField(max_length=50)
desc = models.TextField()
imageLink = models.CharField(max_length=300)
pubDatum = models.CharField(max_length=30, default="1 januari, 1990")
您还没有将 null= True
添加到您的字段,默认为 False
。
如文档中所述
null
If True, Django will store empty values as NULL in the database. Default is False.
所以这应该有效:
imageLink = models.CharField(null=True, max_length=300)
我一直在尝试设置将表单(旨在上传图片)上传到数据库的可能性,该数据库链接到列表中的其他数据,但每次我尝试 运行它,它不会忽略假定为图片的空值。我花了整整一天半的时间阅读并试图解决这个问题,但是关于这个主题的文档并不多。我是否缺少需要将文件上传到的位置 and/or 如果列表中没有添加照片,有没有办法忽略空值?
错误信息:
IntegrityError at /createproduct/
null value in column "imageLink" violates not-null constraint
DETAIL: Failing row contains (81, Comedy, Comic, DC, 5, Engels, 5, Henk, haHAA, null, 808, 2000-04-02).
表单片段 1:
class PRegistrationForm(ModelForm):
ProductsEntry = Products(prodNum=products.id, prodName=products.prodName, prodPrice=products.prodPrice,
prodStock=products.prodStock)
ProductsEntry.save()
ProdData = ProductDetails(prodNum=products(prodNum=products.id), genre=products.genre,
type=products.type, publisher=products.publisher,
totalPages=products.totalPages, language=products.language,
rating=products.rating, author=products.author, desc=products.desc,
imageLink=products.imageLink, pubDatum=products.pubDatum)
ProdData.save()
if commit:
products.save()
return products
表单片段 2:
class ProductDetails(forms.Form):
products_prodName = forms.CharField(required=True, max_length=200)
products_prodPrice = forms.DecimalField(required=True, max_digits=5, decimal_places=2)
products_prodStock = forms.IntegerField(required=True, max_value=5000, min_value=1)
products_genre = forms.CharField(required=False, max_length=15)
products_type = forms.CharField(required=False, max_length=15)
products_publisher = forms.CharField(required=True, max_length=30)
products_totalPages = forms.IntegerField(required=True, max_value=2000, min_value=1)
products_language = forms.CharField(required=False, max_length=25)
products_rating = forms.IntegerField(required=False, max_value=5, min_value=1)
products_author = forms.CharField(required=True, max_length=30)
products_desc = forms.CharField(required=True, max_length=2000)
products_imageLink = forms.FileField(allow_empty_file=True, required=False)
products_pubDatum = forms.DateField(required=False)
def __init__(self, *args, **kwargs):
super(ProductDetails, self).__init__(*args, **kwargs)
self.fields['products_prodName'].label = "Titel:"
self.fields['products_prodPrice'].label = "Prijs:"
self.fields['products_prodStock'].label = "Quantiteit:"
self.fields['products_genre'].label = "Genre:"
self.fields['products_type'].label = "Type:"
self.fields['products_publisher'].label = "Uitgever:"
self.fields['products_totalPages'].label = "Bladzijden:"
self.fields['products_language'].label = "Taal:"
self.fields['products_rating'].label = "Score:"
self.fields['products_author'].label = "Schrijver:"
self.fields['products_desc'].label = "Beschrijving:"
self.fields['products_imageLink'].label = "Foto:"
self.fields['products_pubDatum'].label = "Uitgeefdatum:"
型号:
class Products(models.Model):
class Meta:
verbose_name_plural = "Products"
prodNum = models.IntegerField(primary_key=True)
prodName = models.CharField(max_length=200)
prodPrice = models.DecimalField(max_digits=5, decimal_places=2)
prodStock = models.IntegerField()
def __str__(self):
return (str(self.prodNum))
class ProductDetails(models.Model):
class Meta:
verbose_name_plural = "Product details"
prodNum = models.ForeignKey(Products, db_column='prodNum')
genre = models.CharField(max_length=50)
type = models.CharField(max_length=50, default="Comic")
publisher = models.CharField(max_length=50)
totalPages = models.IntegerField()
language = models.CharField(max_length=25, default="Engels")
rating = models.IntegerField()
author = models.CharField(max_length=50)
desc = models.TextField()
imageLink = models.CharField(max_length=300)
pubDatum = models.CharField(max_length=30, default="1 januari, 1990")
您还没有将 null= True
添加到您的字段,默认为 False
。
如文档中所述
null If True, Django will store empty values as NULL in the database. Default is False.
所以这应该有效:
imageLink = models.CharField(null=True, max_length=300)