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