在将图像上传到表单后,当我提交表单时,它仍然显示"字段是必需的"错误在模型中.py:
class Members(models.Model):
image=models.ImageField(upload_to="images/",default='')
形式.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>
在视图中.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()
我认为您理解以错误的方式使用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
不有效,您可能也不想重定向,因为那时您可能想向用户反馈表单无效(并显示相应的错误(。