Sobes.tech
Назад к вопросам
Junior — Middle
69

Объясните понятие Django Fat Models и их особенности

Ответ от нейросети

sobes.tech AI

В Django концепция "Fat Models" ("толстые модели") означает, что бизнес-логика и методы, связанные с данными, сосредоточены в моделях, а не в представлениях или контроллерах. Это помогает держать код организованным и облегчает повторное использование.

Особенности Django Fat Models:

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

Пример:

from django.db import models

class Order(models.Model):
    total_price = models.DecimalField(max_digits=10, decimal_places=2)
    discount = models.DecimalField(max_digits=5, decimal_places=2, default=0)

    def final_price(self):
        return self.total_price - self.discount

    def apply_discount(self, amount):
        if amount > 0 and amount < self.total_price:
            self.discount = amount
            self.save()

Здесь методы final_price и apply_discount инкапсулируют логику работы с заказом внутри модели.