首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Django-crispy-forms时Create函数不起作用

使用Django-crispy-forms时Create函数不起作用
EN

Stack Overflow用户
提问于 2021-02-24 17:55:23
回答 1查看 32关注 0票数 0

我的应用程序中有一个产品模型,我已经创建了一个forms.py文件和一个视图函数,以便在其中创建一个对象。然后我在我的模板中使用它。填写所有字段并按submit后,页面只会重新加载,而不会创建产品对象。

models.py

代码语言:javascript
复制
class Product(models.Model):
    name = models.CharField(max_length=36)
    price = models.PositiveIntegerField()
    description = models.TextField()
    quantity = models.PositiveIntegerField()
    image = models.ImageField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

forms.py

代码语言:javascript
复制
from django import forms
from .models import *

class AddProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = '__all__'

views.py

代码语言:javascript
复制
def Addproduct(request):

    form = AddProductForm()
    if request.method == 'POST':
        form = AddProductForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            messages.success(request, "Products Added Successfully")
            return redirect('product')

    context = {"form":form}

    return render(request, "core/addproduct.html", context)

addproduct.html

代码语言:javascript
复制
<form method="post">
{% csrf_token %}
<div class="form-row">
  <div class="form-group col-md-4 mb-0">
    {{ form.name|as_crispy_field }}
  </div>
  <div class="form-group col-md-4 mb-0">
    {{ form.price|as_crispy_field }}
  </div>
  <div class="form-group col-md-4 mb-0">
    {{ form.quantity|as_crispy_field }}
  </div>
</div>
{{ form.description|as_crispy_field }}
<div class="form-row">
  <div class="form-group col-md-6 mb-0">
    {{ form.image|as_crispy_field }}
  </div>
  <div class="form-group col-md-6 mb-0">
    {{ form.user|as_crispy_field }}
  </div>
</div>
<button class="au-btn au-btn--block au-btn--green m-b-20" type="submit">Add Product</button>
</form>
EN

回答 1

Stack Overflow用户

发布于 2021-02-24 19:37:05

我可以通过将enctype="multipart/form-data"添加到表单来解决这个问题。

代码语言:javascript
复制
<form method="post" enctype="multipart/form-data">
  {% csrf_token %}
  <div class="form-row">
    <div class="form-group col-md-4 mb-0">
      {{ form.name|as_crispy_field }}
    </div>
    <div class="form-group col-md-4 mb-0">
      {{ form.price|as_crispy_field }}
    </div>
  </div>
  <button class="au-btn au-btn--block au-btn--green m-b-20" type="submit">Add Product</button>
</form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66348474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档