Встречается на собеседованиях • сегодня

Где хранишь бизнес-логику в Django

В Django бизнес-логику рекомендуется хранить в:

  1. Моделях (models.py) - для логики, связанной с данными (валидация, вычисления, методы объектов).
  2. Менеджерах моделей - для сложных запросов к БД.
  3. Сервисных слоях (отдельные модули services/) - для сложной логики, не привязанной к моделям.
  4. Form/Serializer - для валидации входящих данных.

Пример в модели:

python
class Order(models.Model):
    total = models.DecimalField(max_digits=10, decimal_places=2)
    
    def apply_discount(self, percent):
        if 0 < percent < 100:
            self.total *= (1 - percent/100)
            self.save()

Сервисный слой (services/order.py):

python
def process_order_payment(order, payment_data):
    if not order.is_paid:
        # Логика оплаты
        order.mark_as_paid()
        send_receipt(order.user)

Главное правило: избегать размещения логики во views.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы