【发布时间】: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 为例。