当我提交表单时将图像上传到表单后,它仍然显示“必填字段”错误 在models.py中:
class Members(models.Model):
image=models.ImageField(upload_to="images/",default='')
forms.py:
class CreateOne(forms.Form):
image=forms.ImageField(required=True)
在create.html中:
<form class="form-inline" action="create" method="POST"
enctype="multipart/form-data" novalidate>
在views.py中:
def create(request):
member = Members(image=request.FILES['image'])
if request.method == 'POST':
form = forms.CreateOne(request.POST)
if form.is_valid():
member.save()
return redirect('/')
else:
form = CreateOne()
答案 0 :(得分:1)
我认为您了解错误使用Form
的方式。这种Form
的想法是在您编写some_form.save()
时进行更改(例如,创建模型实例并将其保存到数据库中)。
由于大多数形式(可能与此形式类似)都与单个模型相关,因此Django具有ModelForm
,它提供了更多便利:
class CreateOne(forms.ModelForm):
image=forms.ImageField(required=True)
class Meta:
model = Members
fields = ['image']
然后,我们可以使用以下方法创建一个视图,该视图将创建一个实例:
def create(request):
if request.method == 'POST':
form = forms.CreateOne(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('/')
else:
form = CreateOne()
return render(request, 'some_template.html', {'form': form}
在form
是 无效的情况下,您可能还想 not 进行重定向,因为从那时起,您可能希望向用户提供以下形式的反馈:无效(并显示相应的错误)。