如果我使用ModelForm,是否需要手动处理上传的文件?

时间:2017-01-27 13:07:16

标签: django file-upload handle modelform imagefield

我有一个模特:

class Dialogue(models.Model):
    ...
    avatar = models.ImageField(upload_to=conference_directory_path, blank=True)
    ...

它的ModelForm:

class CreateConferenceForm(forms.ModelForm):
    class Meta:
        model = Dialogue
        fields = ['name', 'participants', 'avatar']
    ...

我的问题是我是否需要为处理上传的头像制作一个特殊功能,如:

def handle_uploaded_file(file):
    with open(some_file_path, 'wb+') as destination:
        for chink in file.chunks():
            destination.write(chunk)

或者我可以毫无畏惧地使用ModelForm的save方法? 如果我不能 - 这个功能在哪里更好?在视图或表格中?它看起来如何 - 使用句柄功能保存头像?在开始时,我使用句柄功能处理上传的文件,然后如何将上传的文件添加到图像字段?

1 个答案:

答案 0 :(得分:0)

只要表单使用method="post"并且您在表单上设置enctype="multipart/form-data",ModelForm就会为您处理。您可能还想在模型字段上设置null=True,否则当您不提供图像时,实例将无法保存。