【问题标题】:Override FileField widget in InlineFormset_factory?覆盖 InlineFormset_factory 中的 FileField 小部件?
【发布时间】:2011-04-17 11:12:27
【问题描述】:

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

我可以使用自定义表单让小部件正常工作,只是不知道如何在 inlineformset_factory 中更改小部件。

【问题讨论】:

    标签: django formset


    【解决方案1】:

    这将为您提供 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() 
    

    【讨论】:

    • 啊,太好了,谢谢 stevejalim,我没有看到您可以在 inline_formset 实例中添加表单。现在就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2010-12-09
    • 2015-08-24
    • 1970-01-01
    • 2012-04-10
    • 2019-08-22
    • 2017-10-31
    • 2019-03-12
    相关资源
    最近更新 更多