首页 > 解决方案 > 如何从表单中排除字段?

问题描述

我有一个带有几个字段的模型表单。在一个模板中,我想在一个模板中使用所有这些字段,并在另一个模板中排除某个字段。是否可以不编写新表单而仅在中排除该字段views.py

标签: djangodjango-forms

解决方案


不完全是,但你不必重复自己。

您可以定义一个包含您经常使用的所有字段的基本表单,并从中继承以添加字段

class MyPersonBaseForm( forms.Form):
    surname = forms.CharField( max_length=100)
    forenames = ...
    age = ...
    company = ...
    ...
class MyFooPersonForm( MyPersonBaseForm):
    foo = 

并且MyFooPersonForm拥有所有MyPersonForm加号字段foo

您还可以使用它的__init__方法从表单子类中删除字段,根据这篇文章(garnertb 的相关答案粘贴在下面)

class LoginFormWithoutNickname(LoginForm):
    def __init__(self, *args, **kwargs):
        super(LoginFormWithoutNickname, self).__init__(*args, **kwargs)
        self.fields.pop('nickname')

推荐阅读