【问题标题】:data is not inserting数据未插入
【发布时间】:2020-11-22 05:40:35
【问题描述】:

我正在尝试使用 django 表单 API 插入数据,但每当我尝试插入未插入数据库的数据时它都无法正常工作

这是我的 VIews.py

def create_product(request):
    if request.method == 'POST':
        form = CreateProductForm(request.POST)
        if form.is_valid():
            p_name = form.cleaned_data['name']
            p_cat = form.cleaned_data['category']
            p_brand = form.cleaned_data['brand']
            p_price = form.cleaned_data['price']
            p_image = form.cleaned_data['image']
            p_desc = form.cleaned_data['desc']

            save_product = Product(name=p_name, category=p_cat, brand=p_brand, price=p_price, image=p_image, desc=p_desc)
            save_product.save()
        else:
            return HttpResponse("Failed To Insert Data!")
    else:
        form = CreateProductForm()
    params = {'form':form}
    return render(request, 'adminpanel/createPro.html', params)

这是我的 index.html:

<form class="col-sm-9 m-6" action="" method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        {{form.as_p}}
    <input type="submit" value="Add Product">
</form>

这是我的forms.py

从 django 导入表单 从 django.core 导入验证器 从 .models 导入产品

class CreateProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = ['name', 'category', 'brand', 'image', 'price', 'desc']

这是我的产品模型

class Product(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, default='UNCATEGORIZED')
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE, default='NoBrand')
    image = models.ImageField(upload_to='images/')
    price = models.FloatField()
    desc = models.CharField(max_length=1000, blank=True)

【问题讨论】:

  • 请调试并指定确切的错误
  • 我没有收到任何错误@SivaSankar
  • 我假设 DEBUG=False 在您的 settings.py 中。如果在终端(从那里启动 Django)中出现这种情况,仍然应该打印错误消息。请检查控制台/终端。
  • 您有任何表单错误吗?在模型中,您需要一个ImageField,但您没有在CreateProductForm() 中包含request.FILES,然后如果表单有效,您只需调用form.save()。以here 为例。

标签: python django


【解决方案1】:
def create_product(request):
    form = CreateProductForm()
    if request.method == 'POST':
        form = CreateProductForm(request.POST)
        if form.is_valid():
            form.save(commit=True)
        else:
            return HttpResponse("Failed To Insert Data!")

    params = {'form':form}
    return render(request, 'adminpanel/createPro.html', params)

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 2019-12-01
    • 1970-01-01
    相关资源
    最近更新 更多