@FonVald
Backend Developer

Как правильно организовать код в Django?

Здравствуйте! Вопрос касается нюансов следования принципам SOLID в Django.

Есть модель (схематично) с методом
class Product(models.Model):
    name = models.CharField()
    type = models.CharField(choices=PRODUCT_CHOICES)
    
    def process_new_order(self, *args, **kwargs):
        if self.type == 'type one':
            """ do order """
        if self.type == 'type two':
            """ do another order """


В целом все классно, все отлично выглядит во формах и вьюшках но муляет следующее:
- По принципу открытости/закрытости мы должны избегать проверки типов

То есть логично было бы разделить модель на две прокси модели и преопределить каждой метод, но тогда в формах и вьюшках надо как то определять нужный класс модели. Или возможно нужно другие модели проксировать? или чтото другое.

Как вы считаете правильно можно организовать такого типа код?
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
По-сути у вас есть бизнес-сущность "тип продукта", каждый объект которой реализует свой способ выполнения "do order". Возможно, вам стоит сделать модель ProductType и у нее метод process_new_order(order: Product). А возможно, достаточно будет сделать не django-модель а просто класс в питоне, применив паттерн Стратегия.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы