django - ModelForm 没有将任何数据保存到数据库 - Django
问题描述
我正在尝试使用 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 将产品添加到我的应用程序中。形式正在呈现。但是在提交后它没有将任何数据保存到数据库也没有给出任何错误。
解决方案
您正在上传图片,在这种情况下,您需要设置表单enctype="multipart/form-data"
<form enctype="multipart/form-data" action="" method="post">
...
</form>
推荐阅读
- linux - Linux 上的 pthread_mutex_timedlock
- asp.net - 使用asp.net重定向到包含下拉列表选定项目上的pdf文件的文件夹
- python-3.x - 如何在 2x2 网格中将多张图片(相同大小)与 PIL 组合?
- reactjs - 如何更改子组件按钮的图像并从父组件导航
- sockets - 发送客户端证书如何不将客户端暴露给模拟
- java - 如何在每种方法中使用我的对象数组?
- python - TensorFlow 中的张量如何不可变?
- animation - 情节元素“下降”以产生新情节的动画(分布/直方图)
- excel - 用于搜索重复值的 Excel 公式
- laravel - Laravel 字符串外键格式错误