python - 即使所有字段都有值,django is_valid 也会为模型表单返回 false
问题描述
为什么这会返回无效的表单?我单击浏览,选择一个 csv 文件,选择一个用户,选中布尔框,然后提交。
上传.html
<form action = "" method = "POST" class = "mtop-25">
{% csrf_token %}
{{form}}
<button type = "submit" >Upload File</button>
</form>
模型.py
class Csv(models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE)
file_name = models.FileField(upload_to='csvs', max_length = 100)
public = models.BooleanField(default = False)
def __str__(self):
return "File id: {}".format(self.id)
表格.py
class CsvForm(forms.ModelForm):
class Meta:
model = Csv
fields = '__all__'
labels = {'file_name' : 'Browse'}
视图.py
def upload(request):
form = CsvForm
if request.method == 'POST':
form = CsvForm(request.POST or None, request.FILES or None)
return HttpResponse(form.is_valid())
else:
return render(request, 'upload/upload.html', {'form' : form})
解决方案
处理文件时必须在表单中定义enctype
属性。tag
<form action = "" method = "POST" class = "mtop-25" enctype="multipart/form-data">
推荐阅读
- node.js - 如何在 URL 中传递 MongoDB 集合内的文档的 objectID?
- azure-lab-services - Azure 实验室服务:模板中有多个 VM?
- elasticsearch - 内部对象之间的 Elasticsearch 查询时间戳差异
- string - 比较字符串和数字的方法
- dart - 如何从特定索引的列表中获取项目?
- sql - 选择查询以使用 BigQuery 对输出 json 中的记录进行分组
- gremlin - 无法在 Janusgraph 中使用 Cardinality.list 更新顶点属性
- python - 如何使用 Python 中的时间序列预测来预测未来日期?
- python - 抑制函数的输出
- c# - 在 C# 中使用 LINQ 从另外两个具有相同 ID 的数据表中创建一个新的 DataTable