4

django.contrib.admin.widgets の AdminFileWidget を使用するために、inlineformset_factory フォームのデフォルトのアップロード フィールド (FileField) を変更したいと考えています。これの目的は、現在アップロードされているファイルのパスを管理フォームで表示するのと同じように表示することです (これを行う別の方法があるのではないでしょうか?)。

カスタムフォームを使用してウィジェットを機能させるのに問題はありませんが、inlineformset_factory でウィジェットを変更する方法がわかりません。

4

1 に答える 1

10

これにより、5 つの追加フィールドを備えた標準ウィジェットの代わりに、管理者 FileField ウィジェットが取得されます。

ビュー.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

フォーム.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() 
于 2010-09-26T20:53:24.390 に答える