我有一个非常奇怪的问题:
当我在管理页面中为我的Custom
模型创建一个对象时,一切正常。但是,当我在网站的自定义表单中填写相同的输入时,它不起作用。
问题是file
字段:当我在网站的表单中输入有效文件时,它不会保存,因此我收到验证错误(请参阅下面的clean()函数)。因为即使我上传文件也没有self.file
。在管理页面中,它可以正常工作。
错误在哪里?
背景:
这是我的Custom
模型:
# In my models.py
class Custom(models.Model):
file = models.FileField(max_length=45, upload_to=get_filepath, blank=True)
file_info = models.CharField(max_length=50, blank=True)
...
def clean(self):
if self.file_info and not self.file:
raise ValidationError("...")
这是我的自定义CreateView:
class CustomCreate(CreateView):
model = Custom
form_class = CustomForm
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.user = self.request.user
self.object.save()
return super().form_valid(form)
答案 0 :(得分:0)
我怀疑你的问题出现在HTML中。
您是否在表单中设置了enctype
?
<form action="." method="post" enctype="multipart/form-data">
</form>
如果您不这样做,该文件将无法使用。使用具有文件上载控件的表单时,此值是必需的。