1

我有一个表单,它是 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}}

任何帮助和意见表示赞赏

4

2 回答 2

10

内联表单集是模型表单的集合。该类Meta不属于表单集,它属于模型表单。

通常,您将使用该inlineformset_factory方法创建内联表单集类,该方法可以form作为参数。

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

MyModelFormSet = inlineformset_factory(ParentModel, MyModel, form=MyModelForm)

如果你必须子类BaseInlineFormset化,你也可以提供 formset 作为参数inlineformset_factory

查看内联表单集文档以获取更多信息。

于 2012-03-30T15:43:36.083 回答
4

将小部件合并到 BaseInlineFormSet 类中......

覆盖子类中的“add_fields”方法:

def add_fields(self, form, index):
    super(MyForm, self).add_fields(form, index)
    form.fields["recommend"].widget = forms.RadioSelect()
于 2012-04-16T05:09:46.793 回答