如何在django ModelAdmin中访问内联数据
我需要处理一个文件上传到django管理形式。我在表单中添加了一个文件上载字段:如何在django ModelAdmin中访问内联数据,django,django-models,django-forms,django-admin,Django,Django Models,Django Forms,Django Admin,我需要处理一个文件上传到django管理形式。我在表单中添加了一个文件上载字段: class ExampleInline(admin.TabularInline): model = OtherExample extra = 1 class ExampleForm(forms.ModelForm): filedata = forms.FileField() class Meta: model = ExampleModel class ExampleM
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
此时,我想引用用户在内联中选择的结果。不管他们选了什么,比如说
我如何通过表单访问它?我不想通过这个请求,但我愿意这样做。我还愿意检查
save\u related(self、request、form、formset、change)
save\u 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)
谢谢,我已经了解了必须使用的
save_related
,但是OtherExample
在formset
中的何处?如果您正在从内联表单集中读取数据,您可能需要查看已清理的\u数据
dict中的每个表单。或者完全覆盖内置的save_related
和save_formset
,以便您可以捕获保存表单集的结果,这些结果将是更改或创建的OtherExample
实例。即:formset[0]。已清理的表单数据保存在save_related()
中所需的数据。非常感谢。