如何从表单中排除字段?
Posted
技术标签:
【中文标题】如何从表单中排除字段?【英文标题】:How to exlude fields from forms? 【发布时间】:2020-02-24 20:10:30 【问题描述】:我有一个包含几个字段的模型表单。在一个模板中,我想在一个模板中使用所有这些字段,并在另一个模板中排除某个字段。是否可以不编写新表单而只在views.py
中排除该字段?
【问题讨论】:
【参考方案1】:不完全是,但您不必重复自己。
您可以定义一个包含您经常使用的所有字段的基本表单,并从中继承以添加字段
class MyPersonBaseForm( forms.Form):
surname = forms.CharField( max_length=100)
forenames = ...
age = ...
company = ...
...
class MyFooPersonForm( MyPersonBaseForm):
foo =
而MyFooPersonForm
拥有MyPersonForm
加上foo
的所有字段
您还可以使用其__init__
方法从表单子类中删除字段,如this post (garnertb 的相关答案粘贴在下面)
class LoginFormWithoutNickname(LoginForm):
def __init__(self, *args, **kwargs):
super(LoginFormWithoutNickname, self).__init__(*args, **kwargs)
self.fields.pop('nickname')
【讨论】:
这是我的 B 计划) @pavel_antspovich 您还可以在基本表单中声明所有字段,并在子类中选择性地删除它们。已编辑我的答案。您甚至可以混合使用这些技术,但这很快就会变得混乱。以上是关于如何从表单中排除字段?的主要内容,如果未能解决你的问题,请参考以下文章
Django 1.3 CreateView/ModelForm:unique_together 验证,其中一个字段从表单中排除