【发布时间】:2014-08-26 19:05:19
【问题描述】:
我正在尝试使用 Django 管理面板中模型创建页面中的文件输入来上传文件。该文件不是对象的一部分,因此它不属于对象本身。我只需要获取它,处理它然后删除它。
我已经创建了一个表单:
class AddTaskAndTestsForm(forms.ModelForm):
tests_zip_field = forms.FileField(required=False)
def save(self, commit=True):
# I need to save and process the tests_zip_field file here
return super(AddTaskAndTestsForm, self).save(commit=commit)
class Meta:
model = Problem
我将表单添加到管理面板,所以它现在显示在那里。
创建表单提交后,我需要保存文件,但我该怎么做?
更新:这是我的使用方法。
admin.py:
class ProblemAdmin(admin.ModelAdmin):
form = AddTaskAndTestsForm
fieldsets = [
# ... some fieldsets here
('ZIP with tests', {
'fields': ['tests_zip_field']
})
]
# ... some inlines here
【问题讨论】:
-
您看过文档中涉及forms and files 的部分吗?您需要确保表单在 html 中是多部分的:
<form enctype="multipart/form-data" method="post" action="/foo/">,并且视图中表单的实例化正在获取请求的两个部分:f = ContactFormWithMugshot(request.POST, request.FILES。没有它,表单可能无法将文件传递给视图。 -
更多here
-
@MBrizzle 这不是我放入网站某些页面的表格。这是在“管理面板”中创建模型的一种形式(正如我在问题中所述)。所以不是这样的
-
在管理系统中工作不会阻止您访问请求信息。所有管理视图都是完全可扩展的,允许您访问请求:docs.djangoproject.com/en/1.6/ref/contrib/admin/#other-methods。模板也是如此 - 只需覆盖您应用中的 change_form.html 模板。
标签: django django-forms django-admin