3

我需要处理以 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,]

这会使表单完全像我想要的那样呈现。Request 中返回的数据正是我所期望的。

问题是我想访问内联的内容。

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)

4

1 回答 1

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)
于 2013-10-11T22:06:34.393 回答