Полиморфный 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'
Вернуться на верх