问题描述
您好,我正在尝试为网站上的用户创建一个能够添加产品的表单,我使用ModelForm制作了表单,并且设法将其呈现在模板中,但未按要求运行。在提交表单时,我不断收到验证错误,即尚未提交图像,但我确实添加了图像,有任何想法
型号
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=120)
price = models.FloatField()
image_182x182 = models.ImageField(upload_to='pdt_imgs/')
image_1200x1200 = models.ImageField(upload_to='pdt_imgs/alt_imgs/')
image_600x600 = models.ImageField(upload_to='pdt_imgs/alt_imgs/')
image_600x600_2 = models.ImageField(upload_to='pdt_imgs/alt_imgs/')
image_300x300 = models.ImageField(upload_to='pdt_imgs/alt_imgs/')
img_array = [image_1200x1200,image_600x600,image_600x600_2]
sku = models.IntegerField()
available = models.BooleanField(default=True)
discount = models.IntegerField(default = 0)
category = models.ForeignKey(SubCategory,on_delete=models.CASCADE)
seller = models.ForeignKey(Seller,on_delete=models.CASCADE)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('pdt_detail',args=[str(self.id)])
def get_add_to_cart_url(self):
return reverse('add-to-cart',args= [str(self.id)] )
表格
from .models import Product
from django.forms import ModelForm
class ProductForm(ModelForm):
class Meta:
model = Product
fields = [
'name','price','image_182x182','image_1200x1200','image_600x600','image_600x600_2','image_300x300','sku','available','discount','category','seller'
]
观看次数
from django.utils.decorators import method_decorator
from .decorators import seller_required
from django.views.generic import CreateView
from store.models import Product
from store.forms import ProductForm
from django.contrib import messages
@method_decorator( seller_required,name='dispatch')
class SellerProductAddView(CreateView):
model = Product
form_class = ProductForm
template_name = 'seller_add_pdt.html'
def form_valid(self,form):
product = form.save()
messages.success(self.request,"Your Product was succesfully added")
return redirect('seller_add_pdt')
模板
<div class="ps-block__content">
<form class="ps-form--account-setting" method="post">
{% csrf_token %}
{{ form|crispy }}
<div class="form-group submit">
<button type="submit" class="ps-btn">Add</button>
</div>
</form>
</div>
解决方法
<form class="ps-form--account-setting" method="post" enctype="multipart/form-data">