У меня есть приложение, которое использует форму, которую клиент заполняет и отправляет, позволяет называть ее formA. Теперь у меня также есть та же форма, которую используют сотрудники, но с визуализацией некоторых дополнительных полей. В моем forms.py я вынужден включить эти добавленные поля в форму, хотя я не хочу, чтобы они отображались с точки зрения клиентов, иначе я не могу использовать ту же форму для персонала.
В настоящее время я включил в шаблон логику, чтобы игнорировать эти поля, которые мне не нужны, используя тег {% ifnotequal %}
с field.label
в итерации цикла for по полям, но я чувствую, что это становится слишком громоздким и запутанным для чтения.
Я знаю, что другим вариантом было бы создать отдельную форму, но я чувствую, что это нарушит DRY.
Есть ли в этом случае предпочтительный способ повторного использования форм или лучший способ сделать это?
Вы можете создавать разные формы для представлений клиентов и сотрудников, а затем использовать наследование, чтобы избежать повторения.
class BaseForm(forms.Form):
field1 = forms.CharField()
class StaffForm(BaseForm):
staff_field = forms.CharField()
class CustomerForm(BaseForm):
customer_field = forms.CharField()
Я бы не использовал {% ifnotequal %}
в шаблоне, чтобы решить, отображать ли поля или нет - подобная логика не принадлежит шаблону.
А я почему-то даже не думал об использовании наследования. Спасибо вам за помощь!