0

「inlineformset_factory」があり、個々のフィールドの属性を設定する方法を見つけようとしています。JavaScriptを使用する以外にそれらを追加する方法を思いつきませんでした(これはハックで悪いでしょう)。

最後に、次のようなものが欲しいです:

<input id="id_authorbook_set-0-title" type="text" name="authorbook_set-0-title" maxlength="255" placeholder="Title" autofocus="autofocus">

通常の Forms または ModelForms を使用する場合でもカスタム属性を追加できることは知っていますがattrs={'foo': 'bar', 'placeholder': 'Username'}、フォームセット ファクトリで同じことを行う方法を見つけることができませんでした。

解決策はありますか?助けてくれてありがとう。

4

1 に答える 1

0

動作していると説明するattrs引数は、フォームウィジェットに渡されます。つまり、フォームフィールド、つまりフォームが必要です。

inlineformset_factoryformset_factoryModelForms用です。

2つを結び付けるには、カスタムを定義し、それを引数ModelFormとしてファクトリに渡す必要があります。form

また、アクティブなフォームを反復処理し、同じオーバーライドを実行して、それをに渡すカスタムフォームセットを定義することもできますinlineformset_factory

class MyMF(forms.ModelForm):
    class Meta:
        model = Foo

    def __init__(self, *args, **kwargs):
        super(MyMF, self).__init__(*args, **kwargs)
        self.fields['foo'].widget.attrs = {'foo': 'bar'}

inlineformset_factory(form=MyMF)
于 2012-08-21T23:26:01.030 に答える