如果我使用 ModelForm,是否需要手动处理上传的文件?
Do I need to handle uploaded files manually if I use a ModelForm?
我有一个模型:
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方法?
如果我做不到 - 这个功能在哪里更好:在视图中还是在表单中?它看起来如何 - 使用句柄功能保存头像?一开始我使用 handle 函数处理上传的文件,然后如何将上传的文件添加到 imagefield?
只要您的表单使用 method="post"
并且您在表单上设置了 enctype="multipart/form-data"
,ModelForm 就会为您处理。您可能还想在模型字段上设置 null=True
,否则当您不提供图像时实例将不会保存。
我有一个模型:
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方法? 如果我做不到 - 这个功能在哪里更好:在视图中还是在表单中?它看起来如何 - 使用句柄功能保存头像?一开始我使用 handle 函数处理上传的文件,然后如何将上传的文件添加到 imagefield?
只要您的表单使用 method="post"
并且您在表单上设置了 enctype="multipart/form-data"
,ModelForm 就会为您处理。您可能还想在模型字段上设置 null=True
,否则当您不提供图像时实例将不会保存。