向 ModelForm 添加额外字段

Posted

技术标签:

【中文标题】向 ModelForm 添加额外字段【英文标题】:add extra field to ModelForm 【发布时间】:2015-08-26 00:06:44 【问题描述】:

我正在像这样向 Django ModelForm 添加一个额外的字段:

class form(forms.ModelForm):
    extra_field = forms.CharField(label='Name of Institution')
    class Meta:
        model = db_institutionInstitution
        fields = ['conn_kind','time','inst_name2']

该表单实际上工作正常,但我无法预先填充它。我在modelformset_factory 中使用它:

formset = modelformset_factory(db_institutionInstitution,form=form)

我手动运行一个查询集,并在字典中添加表单集中附加表单所需的条目。但是,当我打电话时:

formset1 = formset(prefix='brch',queryset=qs1)

extra_field 未按预期预填充(其余工作正常)。

谁能帮忙?

【问题讨论】:

【参考方案1】:

如果你想设置一个默认值。

extra_field = forms.CharField(label='Name of Institution', initial="harvard")

如果您想动态设置一个值,请将其放在表单初始化中:

def __init__(self, *args, **kwargs):
    super(form, self).__init__(*args, **kwargs)
    self.fields['extra_field'].initial = "harvard"

【讨论】:

“默认”应该是“初始” AttributeError: module 'django.forms' has no attribute 'Charfield'。任何人都知道这个答案将如何在 django 2.1 中工作? 有'CharField' 如果我这样做,我的 form.is_valid() 总是返回 false

以上是关于向 ModelForm 添加额外字段的主要内容,如果未能解决你的问题,请参考以下文章

Django 将额外字段添加到从模型生成的 ModelForm

如何在 Django 中向 ModelForm 添加非模型字段?

向 mysql 插入脚本添加额外的表单发布字段

React 转换服务器响应(向对象添加额外字段)

向现有 json 模式添加额外字段并即时生成 c# 类

如何使用 django 向默认 auth_user 模型添加额外的模型字段