【发布时间】:2011-04-17 11:12:27
【问题描述】:
我想更改 inlineformset_factory 表单中的默认上传字段 (FileField),以使用 django.contrib.admin.widgets 中的 AdminFileWidget。这样做的目的是像在管理表单中一样显示当前上传文件的路径(也许还有其他方法可以做到这一点?)。
我可以使用自定义表单让小部件正常工作,只是不知道如何在 inlineformset_factory 中更改小部件。
【问题讨论】:
我想更改 inlineformset_factory 表单中的默认上传字段 (FileField),以使用 django.contrib.admin.widgets 中的 AdminFileWidget。这样做的目的是像在管理表单中一样显示当前上传文件的路径(也许还有其他方法可以做到这一点?)。
我可以使用自定义表单让小部件正常工作,只是不知道如何在 inlineformset_factory 中更改小部件。
【问题讨论】:
这将为您提供 Admin FileField 小部件,而不是带有 5 个额外字段的标准小部件。
views.py
MySpecialFormset = inlineformset_factory( MyParentModel,
MyChildModel,
form=MyChildModelForm,
extra=5)
formset = MySpecialFormset(instance=myparentmodelinstance) #add request.POST and request.FILES if used on the POST cycle
forms.py
from django.contrib.admin.widgets import AdminFileWidget
class MyChildModelForm(forms.ModelForm):
class Meta:
model = MyChildModel
def __init__(self, *args, **kwargs):
super(MyChildModelForm, self).__init__(*args, **kwargs)
self.fields['my_file_field'].widget = AdminFileWidget()
【讨论】: