2010-09-26 69 views
4

我想更改inlineformset_factory表單中的默認上傳字段(FileField),以使用django.contrib.admin.widgets中的AdminFileWidget。這樣做的目的是顯示當前上傳文件的路徑,就像它在管理表單中一樣(也許還有另一種方法可以做到這一點?)。覆蓋InlineFormset_factory中的FileField小部件?

我沒有任何問題讓小部件使用自定義窗體工作,只是不知道如何在inlineformset_factory中更改小部件。

回答

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 

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() 
+0

啊很好,謝謝stevejalim,我說好的看出,你可以在inline_formset實例添加的形式。現在就像魅力一樣。 – HdN8 2010-09-27 07:39:09

相關問題