15

私はDjangoが初めてで、ドキュメントにこれが欠けていると思います。
問題は、inline-formset ではフォームを宣言せず、2 つのモデルを渡して構築するだけであることです。
インライン フォームセットを使用して単一フィールドのウィジェットを変更する方法を知りたいですか?

4

4 に答える 4

6

これは、formfield_callback を使用して 1 つのフィールドをカスタマイズする例です。

def formfield_callback(field):
    if isinstance(field, models.ChoiceField) and field.name == 'target_field_name':
        return fields.ChoiceField(choices = SAMPLE_CHOICES_LIST, label='Sample Label')
    return field.formfield()

FormSet = inlineformset_factory(ModelA, ModelB, extra=1, formfield_callback = formfield_callback)
于 2012-08-21T12:58:18.810 に答える
3

クラスでフォームと更新ウィジェットを定義する必要がありますMetaデフォルトのフィールド タイプまたはウィジェットのオーバーライドを参照してください。

于 2012-08-21T12:25:43.473 に答える
2

フォームセットをサブクラス化し、add_fields メソッドをオーバーライドできます。これは私にとってはうまくいき、私はDjango 1.5を使用しています:( .

AuthorInlineFormSet = inlineformset_factory(Author, Book)
class AuthorFormSet(AuthorInlineFormSet):
        def add_fields(self, form, index):
            super(ReferenceForm,self).add_fields(form,index)
            form.fields["name"] = forms.CharField(widget=forms.TextInput())
于 2015-11-27T20:31:41.283 に答える