我正在使用django生成的表单视图接收此字段为必填错误。
我有一个看起来像的扫描模型:
class Scan(models.Model):
device = models.ForeignKey(Device, null=True, on_delete=models.SET_NULL)
created_at = models.DateTimeField('Created', auto_now=True)
data = models.FileField(upload_to='uploads/')
def __str__(self):
return str("{}-{}".format(self.device, self.created_at))
我定义了一个CreateView:
class ScanCreate(LoginRequiredMixin, CreateView):
model = Scan
fields = '__all__'
我的网址路由是
urlpatterns = [
...
path('scan/create/', views.ScanCreate.as_view(), name='scan-create'),
...
]
最后是一个scan_form.html模板
{% block content %}
<form action="" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit">
</form>
{% endblock %}
在选择要上传的文件并提交表单时,我得到“此字段为必填字段”。错误,请求失败:
答案 0 :(得分:1)
代码中的主要问题是您没有在表单中使用enctype="multipart/form-data"
,因此当请求发送到服务器时,它在request.FILES
集合中没有文件。 / p>
您必须像这样为表单编写html代码:
{% block content %}
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit">
</form>
{% endblock %}
并确保操作指向正确的URL。
最后,这是文件上传的文档:https://docs.djangoproject.com/en/2.1/topics/http/file-uploads/