【发布时间】:2020-02-24 20:10:30
【问题描述】:
我有一个包含几个字段的模型表单。在一个模板中,我想在一个模板中使用所有这些字段,并在另一个模板中排除某个字段。是否可以不编写新表单而只在views.py 中排除该字段?
【问题讨论】:
标签: django django-forms
我有一个包含几个字段的模型表单。在一个模板中,我想在一个模板中使用所有这些字段,并在另一个模板中排除某个字段。是否可以不编写新表单而只在views.py 中排除该字段?
【问题讨论】:
标签: django django-forms
不完全是,但您不必重复自己。
您可以定义一个包含您经常使用的所有字段的基本表单,并从中继承以添加字段
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')
【讨论】: