diff --git a/myproject/orders/services/draft_service.py b/myproject/orders/services/draft_service.py index e7ebd69..79e9fd7 100644 --- a/myproject/orders/services/draft_service.py +++ b/myproject/orders/services/draft_service.py @@ -7,6 +7,7 @@ from django.utils import timezone from django.core.exceptions import ValidationError from decimal import Decimal import decimal +from datetime import datetime, date, time from ..models import Order, OrderItem from products.models import Product, ProductKit @@ -127,6 +128,30 @@ class DraftOrderService: except (ValueError, TypeError, decimal.InvalidOperation): value = Decimal('0') + # Конвертируем дату + elif field == 'delivery_date': + if value == '' or value is None: + value = None + elif isinstance(value, str): + try: + value = datetime.strptime(value, '%Y-%m-%d').date() + except ValueError: + value = None + + # Конвертируем время + elif field in ['delivery_time_start', 'delivery_time_end']: + if value == '' or value is None: + value = None + elif isinstance(value, str): + try: + # Формат времени может быть HH:MM или HH:MM:SS + if len(value.split(':')) == 2: + value = datetime.strptime(value, '%H:%M').time() + else: + value = datetime.strptime(value, '%H:%M:%S').time() + except ValueError: + value = None + setattr(order, field, value) order.modified_by = user