Понимание ответственности каждой части архитектуры django

Я немного запутался в архитектуре ответственности Django.

В своем проекте я выбрал работу с CBV и встроенный urls. В процессе обучения я понял, что обязанности делятся на: Model, View, Template где:

Model заботится о данных и DataBase, из docs : "definitive source of information about your data. It contains the essential fields and behaviors of the data you’re storing"

View заботится о request and response

Template - это приложение уровня высокого уровня для отображения данных

поправьте меня, если это не так.

Большинство моих вопросов касаются того, куда поместить коды, например:

<
class Product(models.Model):
    ..."""other fields"""
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    product_title = models.CharField(max_length=255, default='product_title')  
    product_title_seo = models.CharField(max_length=255, default='product_title_seo')    
    slug = models.SlugField(max_length=250,unique=True,null=True)

    def __str__(self):
        return self.product_title
    
    def get_absolute_url(self):
        return reverse('product_change', kwargs={'slug': self.slug, 'pk': self.pk})

    def save(self, *args, **kwargs): 
        self.product_title_seo = slugify(self.product_goal + " " + self.product_type + " " + self.product_district)
        self.product_title = slugify(self.product_title)
        if not self.slug:
            self.slug = self.product_title_seo
        return super().save(*args, **kwargs)

Итак, как мы видим, у меня есть 3 метода внутри моего model class, но мне нужна обработка для большинства полей, что представляет собой значительное увеличение количества методов.

Этот подход правильный, много методов в классе модели, если нет, то как отделить и куда поместить эти методы?

Вернуться на верх