简体   繁体   English

使用Django表单提交时出现错误

[英]I got error when I submit with django form

I want to post data from 2 django forms but I can't save data to my db. 我想发布2种Django表单中的数据,但无法将数据保存到我的数据库中。 Why is it? 为什么? After I pushed submit button, I see message "it is required" below my price input box. 按提交按钮后,在价格输入框下方看到消息“这是必需的”。

My views 我的看法

def addproduct(request):

   user = request.user
   product_form = ProductForm(request.POST or None)
   product_image_form = ProductImageForm(request.POST or None)

   if product_form.is_valid() and product_image_form.is_valid():
      product = product_form.save(commit=False)
      product.user = request.user
      product.slug = slugify(product_form.cleaned_data['title'])
      product.featured = False
      product.active = False
      product.save()
      product_image = product_image_form.save(commit=False)
      product_image.featured = False
      product_image.save()
      return HttpResponseRedirect('/products/%s'%(product.slug))

My Models 我的模特儿

class Product(models.Model):
   user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True)
   title = models.CharField(max_length=120)
   description = models.TextField(null=True, blank=True)
   price = models.DecimalField(decimal_places=0, max_digits=100, default=0)
   slug = models.SlugField(unique=True)

class ProductImage(models.Model):
   product = models.ForeignKey(Product)
   image = models.ImageField(upload_to='products/images/')
   featured = models.BooleanField(default=False)

My forms 我的表格

from django import forms
from .models import Product, ProductImage

class ProductForm(forms.ModelForm):
   class Meta:
       model = Product
       fields = ('title', 'description', 'price')

class ProductImageForm(forms.ModelForm):
   class Meta:
       model = ProductImage
       fields = ('image', 'featured')

You get "This field is required" error not below the price input box but above image selector. 您在价格输入框下方而不是图像选择器上方收到“此字段必填”错误。 You forget to pass request.FILES argument to the ProductImageForm : 您忘记了将request.FILES参数传递给ProductImageForm

product_image_form = ProductImageForm(request.POST or None,
                                      request.FILES or None)

And don't forget to specify enctype attribute in your <form> tag: 并且不要忘记在<form>标记中指定enctype属性:

<form method="post" enctype="multipart/form-data">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM