我正在尝试使用modelForm将产品添加到我的应用程序中。表单正在呈现。但是提交后,它没有将任何数据保存到数据库,也没有给出任何错误。
请找到以下代码和帮助。
模型
class Product(models.Model):
product_name = models.CharField(max_length=200)
product_category = models.CharField(max_length=50,
choices=(('Distemper', 'Distemper'), ('Exterior', 'Exterior '),
('Interior', 'Interior')))
product_image = models.ImageField(upload_to='product_images')
product_MRP = models.FloatField()
product_size = models.IntegerField()
product_packeging = models.CharField(choices=(('KG', 'KG'), ('Liters', 'Liters ')), max_length=10)
product_datecreated = models.DateField(auto_now_add=True)
def __str__(self):
return self.product_name + ' | ' + str(self.product_size) + ' | ' + self.product_packeging
表格
class AddProductForm(ModelForm):
class Meta:
model = Product
fields = '__all__'
widgets = {
'product_name': forms.TextInput(
attrs={'type': 'list', 'class': "form-control", 'placeholder': "Product name"}),
'product_category': forms.Select(
attrs={'type': 'text', 'class': "form-control", 'placeholder': "Category"}),
'product_image': forms.FileInput(
attrs={'type': 'file', 'class': "form-control", 'placeholder': "Product Image"}),
'product_MRP': forms.NumberInput(
attrs={'type': 'text', 'class': "form-control", 'placeholder': "Product MRP"}),
'product_size': forms.NumberInput(
attrs={'type': 'list', 'class': "form-control", 'placeholder': "Product Size"}),
'product_packeging': forms.Select(
attrs={'type': 'list', 'class': "form-control", 'placeholder': "Select"}),
}
模板
{% block content %}
<form style="margin-left: 15px; margin-right: 15px" method="post" action="add_product">
{% csrf_token %}
{{ form }}
<div class="modal-footer" style="display:flex; justify-content: center">
<button style="text-align: center" type="submit" class="btn btn-info">Create</button>
</div>
</form>
{% endblock %}
视图
def add_product(request):
form = AddProductForm()
context = {'form': form}
if request.method == 'POST':
form = AddProductForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.info(request, 'Product added successfully')
print('Product Created')
return render(request, 'add_product.html', context)
预先感谢
我正在尝试使用modelForm将产品添加到我的应用程序中。表单正在呈现。但是提交后,它没有将任何数据保存到数据库,也没有给出任何错误。
答案 0 :(得分:1)
您正在上传图像,在这种情况下,您需要设置表单enctype="multipart/form-data"
<form enctype="multipart/form-data" action="" method="post">
...
</form>