Html Django-窗体的首选编程设计,不违反DRY
我有一个应用程序,它使用一个客户填写并提交的表单,我们称之为formA。现在,我还有工作人员使用的相同表单,并呈现了一些附加字段。在我的forms.py中,我被迫将这些添加的字段包括到表单中,即使我不希望从客户的角度呈现这些字段,否则我不能对员工使用相同的表单 目前,我已经在模板中包含了忽略这些字段的逻辑,通过使用Html Django-窗体的首选编程设计,不违反DRY,html,django,django-forms,django-templates,Html,Django,Django Forms,Django Templates,我有一个应用程序,它使用一个客户填写并提交的表单,我们称之为formA。现在,我还有工作人员使用的相同表单,并呈现了一些附加字段。在我的forms.py中,我被迫将这些添加的字段包括到表单中,即使我不希望从客户的角度呈现这些字段,否则我不能对员工使用相同的表单 目前,我已经在模板中包含了忽略这些字段的逻辑,通过使用{%ifnotequal%}标记和字段。标签在字段上进行for循环迭代,我不希望忽略这些字段,但我觉得它变得太麻烦,难以阅读 我知道另一个选择是创建一个单独的表单,但我觉得这会违反DR
{%ifnotequal%}
标记和字段。标签
在字段上进行for循环迭代,我不希望忽略这些字段,但我觉得它变得太麻烦,难以阅读
我知道另一个选择是创建一个单独的表单,但我觉得这会违反DRY
在这种情况下,是否有更好的方法重用表单?您可以为客户和员工视图创建不同的表单,然后使用继承来避免重复
class BaseForm(forms.Form):
field1 = forms.CharField()
class StaffForm(BaseForm):
staff_field = forms.CharField()
class CustomerForm(BaseForm):
customer_field = forms.CharField()
我会避免在模板中使用
{%ifnotequal%}
来决定是否显示字段——这样的逻辑不属于模板。啊,出于某种原因,我甚至没有考虑使用继承。谢谢你的帮助!