首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:如何在内联表单集中更改字段小部件

Django:如何在内联表单集中更改字段小部件
EN

Stack Overflow用户
提问于 2012-08-21 20:21:41
回答 4查看 13.4K关注 0票数 15

我是Django的新手,我想我在文档中错过了这一点。

问题是,在inline-formset中,我没有声明一个表单,只是传递了两个模型来构造它。

我想知道如何使用内联表单集更改单个字段的小部件?

EN

回答 4

Stack Overflow用户

发布于 2015-05-12 21:14:47

As of Django 1.6,您可以使用modelformset_factorywidgets参数来自定义特定字段的小部件:

代码语言:javascript
复制
AuthorFormSet = modelformset_factory(Author, widgets={
    'name': Textarea(attrs={'cols': 80, 'rows': 20})
})

并对inlineformset_factory (使用modelformset_factory)使用相同的参数:

代码语言:javascript
复制
AuthorInlineFormSet = inlineformset_factory(Author, Book, fields=['name'], widgets={
    'name': Textarea(attrs={'cols': 80, 'rows': 20})
})
票数 20
EN

Stack Overflow用户

发布于 2012-08-21 20:58:19

以下是使用formfield_callback自定义一个字段的示例:

代码语言:javascript
复制
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)
票数 6
EN

Stack Overflow用户

发布于 2012-08-21 20:25:43

您需要在Meta类中定义一个表单并更新小部件。看看Overriding the default field types or widgets

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12054726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档