django - 在 Django 中提交表单后,模型中没有创建对象
问题描述
我有一个将obj添加到模型的表格,整个过程没有错误,也没有任何对象添加到模型中。我错过了什么吗?
下面是我的模型,该字段与表单匹配,但不是全部。
product_name = models.CharField(max_length=200)
price = models.DecimalField(decimal_places=2, max_digits=10, blank=True)
created = models.DateTimeField(auto_now=True)
img = models.ImageField(upload_to='product', default='xxxxx')
img2 =models.ImageField(upload_to='product', null=True, default='xxxxxx')
img3 =models.ImageField(upload_to='product', null=True, default='xxxxx')
img4 =models.ImageField(upload_to='product', null=True, default='xxxxxxx')
storage_amount = models.PositiveIntegerField(validators=[MinValueValidator(0)])
out_of_storage_or_not = models.BooleanField(default=False)
description = models.TextField(blank=True, null=True)
Hot = models.BooleanField(default=False)
type = models.CharField(
max_length=2,
choices=PRODUCT_CHOICES,
default=xxxxx,
)
status = models.IntegerField(choices=STATUS, default=0)
slug = models.SlugField(max_length=255, unique=True)
表格.py:
class Add_Product(forms.ModelForm):
product_name = forms.CharField()
price = forms.DecimalField()
img = forms.ImageField()
img2 = forms.ImageField()
img3 = forms.ImageField()
storage_amount = forms.IntegerField()
description = forms.CharField(widget=forms.Textarea(attrs={'cols': 80, 'rows': 20}))
Hot = forms.BooleanField(widget=forms.CheckboxInput())
type = forms.ChoiceField(widget=forms.RadioSelect, choices=PRODUCT_CHOICES)
status = forms.ChoiceField(choices=STATUS)
slug = forms.CharField()
class Meta:
model = Product
fields = ('product_name', 'price', 'img', 'img2', 'img3', 'storage_amount', 'description', 'Hot', 'type', 'status', 'slug')
视图.py:
if request.method == 'POST':
form = Add_Product(data=request.POST)
if form.is_valid():
product = form.save(commit=False)
product.save()
messages.success(request, 'Success')
return redirect('/')
else:
form = Add_Product()
context = {'form': form}
return render(request, 'add_product.html', context)
add_product.html:
<form method="POST" class="card-body" >
{% csrf_token %}
<h3 style="text-align: center">Add Product</h3>
{{ form | crispy }}
<button type="submit">Submit</button>
</form>
解决方案
你也有图像文件所以你需要添加 enctype 来加载这些图像文件
<form method="POST" class="card-body" enctype="multipart/form-data">
及其
form = Add_Product(request.POST or None, request.FILES or None)
推荐阅读
- python - 通过循环在数据框中添加列并根据另一列中的内容进行填充
- javascript - 带有延迟而不是中断的实时绘图
- magento2 - 更新后产品从类别列表页面消失
- python - 如何检查用户类型并将它们定向到 Django 中的相应页面?
- android - 在为 android studio 安装 git 时,它显示这种类型的错误,“内部错误:CallspawnServer:Uexpected respose:$ 0”
- java - 如何在 Firebase FireStore 中存储 textClock
- c - 为什么我对 Dijkstra 算法的实现没有按应有的方式运行?
- python-3.x - 使用来自服务器的数据而不是文件来为 Microsoft azure Speech SDK 转录
- python - 在 python 脚本中将文件写入 /usr/local/bin 时出现问题
- delphi-xe5 - 如何将带有文本的复选框添加到 TMS tAdvStringGrid 中的单元格中