Полиморфный Django CreateView
Я использую Django 3.2.9 и имею три класса BaseClass
, Class1
и Class2
, причем Class1
и Class2
наследуются от BaseClass
. В идеале, я хотел бы использовать CreateView
, UpdateView
и DetailView
для управления этими классами, а не писать собственные View
. Можно ли создать один CreateView
, который будет принимать некоторый контекст (type_name
, скажем) и затем автоматически получать model=Class1
или model=Class2
(вместе с form_class
и template_name
)? Эти классы довольно тесно связаны, но достаточно похожи, чтобы я хотел, чтобы их создание находилось на одном и том же URL. Или же мне лучше просто написать View
, который будет обрабатывать все это напрямую, без каких-либо удобных функций общих представлений Django?
Вы можете создать базовое представление для каждой операции CRUD, реализовать в нем общую логику, а затем наследовать ее в своих конкретных представлениях, что-то в этом роде:
class BaseCreateView(CreateView):
type_name = None
# write your common logic here
class class1CreateView(BaseCreateView):
type_name = Class1
template_name = 'class1.html'
class class2CreateView(BaseCreateView):
type_name = Class2
template_name = 'class2.html'