Исправлена обработка числовых полей при автосохранении черновика
Добавлена конвертация строковых значений в Decimal для полей delivery_cost и discount_amount, чтобы избежать ошибки типа при автосохранении. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ from django.db import transaction
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
import decimal
|
||||||
|
|
||||||
from ..models import Order, OrderItem
|
from ..models import Order, OrderItem
|
||||||
from products.models import Product, ProductKit
|
from products.models import Product, ProductKit
|
||||||
@@ -114,7 +115,19 @@ class DraftOrderService:
|
|||||||
# Обрабатываем простые поля
|
# Обрабатываем простые поля
|
||||||
for field in simple_fields:
|
for field in simple_fields:
|
||||||
if field in data:
|
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.modified_by = user
|
||||||
order.last_autosave_at = timezone.now()
|
order.last_autosave_at = timezone.now()
|
||||||
|
|||||||
Reference in New Issue
Block a user