我需要处理以django管理员表单上传的文件。我在表单中添加了一个文件上传字段:
class ExampleInline(admin.TabularInline):
model = OtherExample
extra = 1
class ExampleForm(forms.ModelForm):
filedata = forms.FileField()
class Meta:
model = ExampleModel
class ExampleModelAdmin(admin.ModelAdmin):
form = ExampleForm
inlines = [ExampleInline,]
这使表单呈现与我想要呈现的完全相同。请求中返回的数据正是我所期望的。
问题是我想访问内联的内容。
class ExampleAdmin(admin.ModelAdmin):
...
def save_model(self, Request, obj, form, change):
the_file = form.cleaned_data['filedata']
# do amazing things to contents of file
此时我想引用用户在内联中选择的结果。无论他们为OtherExample挑选什么。
如何通过表单访问?我不想通过请求,但我愿意这样做。我也愿意检查save_related(self,request, form, formset, change)
答案 0 :(得分:6)
save_related
可以执行此操作,虽然在保存表单后调用它,因此您最终会将对象保存两次。您可以form.instance
或formset.instance
访问该对象。
def save_related(self, request, form, formsets, change):
obj = form.instance
# whatever your formset dependent logic is to change obj.filedata
obj.save()
super(ExampleAdmin, self).save_related(request, form, formsets, change)