Кастинг объекта модели Django, который переключает логику на типы, чтобы с ним было проще работать
У меня есть модель Django, которая имеет поле type
:
class MyModel(models.Model):
type = models.CharField(choices=MyModelTypes.choices)
...
def some_func(self):
if self.type == "TYPE_1":
do_something_1()
elif self.type == "TYPE_2":
do_something_2()
Это становится очень сложным и приводит к тому, что везде мусолятся условия, поэтому мне интересно, есть ли какой-то способ привести мою модель в какой-то конкретный объект, который имеет конкретную реализацию этой some_func()
функции для типа.:
class MyModelTypeA:
...
class MyModelTypeB:
...
class MyModel(models.Model):
type = models.CharField(choices=MyModelTypes.choices)
...
def some_func(self):
# Obviously this won't work, but I want something that allows me to turn
# MyModel into the right type then call the `some_func()` (which has logic
# specific to the `type`).
MyModelType(self).some_func()
Или, возможно, это неправильный подход. Есть идеи?