diff --git a/myproject/orders/services/draft_service.py b/myproject/orders/services/draft_service.py index 5eb8088..e7ebd69 100644 --- a/myproject/orders/services/draft_service.py +++ b/myproject/orders/services/draft_service.py @@ -6,6 +6,7 @@ from django.db import transaction from django.utils import timezone from django.core.exceptions import ValidationError from decimal import Decimal +import decimal from ..models import Order, OrderItem from products.models import Product, ProductKit @@ -114,7 +115,19 @@ class DraftOrderService: # Обрабатываем простые поля for field in simple_fields: if field in data: - setattr(order, field, data[field]) + value = data[field] + + # Конвертируем числовые поля в Decimal + if field in ['delivery_cost', 'discount_amount']: + if value == '' or value is None: + value = None + else: + try: + value = Decimal(str(value)) + except (ValueError, TypeError, decimal.InvalidOperation): + value = Decimal('0') + + setattr(order, field, value) order.modified_by = user order.last_autosave_at = timezone.now()