首页 > 解决方案 > 即使所有字段都有值,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}) 
      

标签: pythondjango

解决方案


处理文件时必须在表单中定义enctype属性。tag

<form action = "" method = "POST" class = "mtop-25" enctype="multipart/form-data">

推荐阅读