Где хранишь бизнес-логику в Django
Python
Middle
Без компании
Где хранишь бизнес-логику в Django
Ответы
В Django бизнес-логику рекомендуется хранить в:
- **Моделях (models.py)** - для логики, связанной с данными (валидация, вычисления, методы объектов).
- **Менеджерах моделей** - для сложных запросов к БД.
- **Сервисных слоях (отдельные модули services/)** - для сложной логики, не привязанной к моделям.
- **Form/Serializer** - для валидации входящих данных.
Пример в модели:
```
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):
```
def process_order_payment(order, payment_data):
if not order.is_paid:
# Логика оплаты
order.mark_as_paid()
send_receipt(order.user)
```
Главное правило: избегать размещения логики во views.