在InlineFormset_factory中覆盖FileField小部件?

HdN*_*dN8 4 django formset

我想在inlineformset_factory表单中更改默认上载字段(FileField),以使用django.contrib.admin.widgets中的AdminFileWidget.这样做的目的是显示当前上传文件的路径,就像在管理表单中一样(也许还有另一种方法可以做到这一点?).

我可以毫不费力地使用自定义表单来使用窗口小部件,但是无法弄清楚如何在inlineformset_factory中更改窗口小部件.

Ste*_*lim 10

这将为您提供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
Run Code Online (Sandbox Code Playgroud)

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() 
Run Code Online (Sandbox Code Playgroud)