我是Django的新手,我想我在文档中错过了这一点。
问题是,在inline-formset中,我没有声明一个表单,只是传递了两个模型来构造它。
我想知道如何使用内联表单集更改单个字段的小部件?
发布于 2015-05-12 21:14:47
As of Django 1.6,您可以使用modelformset_factory的widgets参数来自定义特定字段的小部件:
AuthorFormSet = modelformset_factory(Author, widgets={
'name': Textarea(attrs={'cols': 80, 'rows': 20})
})并对inlineformset_factory (使用modelformset_factory)使用相同的参数:
AuthorInlineFormSet = inlineformset_factory(Author, Book, fields=['name'], widgets={
'name': Textarea(attrs={'cols': 80, 'rows': 20})
})发布于 2012-08-21 20:58:19
以下是使用formfield_callback自定义一个字段的示例:
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-21 20:25:43
您需要在Meta类中定义一个表单并更新小部件。看看Overriding the default field types or widgets
https://stackoverflow.com/questions/12054726
复制相似问题