Понимание ответственности каждой части архитектуры 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
, но мне нужна обработка для большинства полей, что представляет собой значительное увеличение количества методов.
Этот подход правильный, много методов в классе модели, если нет, то как отделить и куда поместить эти методы?