2017-12-14 16 views
0

私は、(画像をアップロードするための)フォームのアップロード可能性をデータベースに設定しようとしていました。私はそれを実行しようとするたびに、それは画像であると思われるnullを無視しません。私は読んできましたが、これを固定して1日半の間修正しようとしましたが、このテーマでは多くのドキュメントが見つかりませんでした。ファイルをアップロードする必要がある場所がないか、または写真がリストに追加されていない場合はnullを無視する方法がありますか?Django - "imageLink"列のヌル値がnullでない制約に違反しています

エラーメッセージ:

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") 

答えて

0

あなたのフィールドにnull= Trueを追加していない場合、デフォルトはFalseです。 docssと同様に

null If True, Django will store empty values as NULL in the database. Default is False.

だから、これは動作するはずです:)__init __(:

imageLink = models.CharField(null=True, max_length=300) 
+0

を私はすでにそれを試してみましたが、私はそれに加えて、それを実行しようとした場合、それは言う: はTypeErrorを予期しないキーワード引数 'null'が表示される –

+0

変更後に移行を実行しましたか? –

+0

モデルフィールドではなく、モデルフォームフィールドをコピーしたので、私は自分の答えを編集しました。 –

関連する問題