From af0c0189bacead43df071d6fcc39c992f6fa6ed8 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Sun, 9 Nov 2025 12:18:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=87=D0=B8=D1=81=D0=BB=D0=BE=D0=B2=D1=8B=D1=85?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20=D0=BF=D1=80=D0=B8=20=D0=B0?= =?UTF-8?q?=D0=B2=D1=82=D0=BE=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8=20=D1=87=D0=B5=D1=80=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлена конвертация строковых значений в Decimal для полей delivery_cost и discount_amount, чтобы избежать ошибки типа при автосохранении. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- myproject/orders/services/draft_service.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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()