Django - 在BaseInlineFormSet的子类中更改字段的小部件

bla*_*ise 1 django formset

我有一个表单是BaseInlineFormSet的子类,对于相关模型中的一个字段,我喜欢更改它的小部件.这是我的表单代码:

class MyForm(forms.models.BaseInlineFormSet):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        self.forms[0].error_css_class = 'error'
        self.forms[0].required_css_class = 'required'

    class Meta:
        model = MyModel

        # here I am trying.
        # recommend is an IntegerField in MyModel, which -
        # I like to make it render in the form as a Radio Select (yes, no)
        widgets = {'recommend': {forms.RadioSelect}}
Run Code Online (Sandbox Code Playgroud)

任何帮助和输入表示赞赏

Ala*_*air 10

内联formset是模型表单的集合.本Meta类不属于在Formset,它属于一个模型形式.

通常,您将使用该inlineformset_factory方法创建内联formset类,该方法可以form作为参数.

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        widgets = {'recommend': forms.RadioSelect()}

MyModelFormSet = inlineformset_factory(ParentModel, MyModel, form=MyModelForm)
Run Code Online (Sandbox Code Playgroud)

如果必须进行子类化BaseInlineFormset,则还可以将formset作为参数提供inlineformset_factory.

有关详细信息,请查看内联formset文档.