diff --git a/myproject/orders/services/draft_service.py b/myproject/orders/services/draft_service.py index c3b989f..5eb8088 100644 --- a/myproject/orders/services/draft_service.py +++ b/myproject/orders/services/draft_service.py @@ -82,15 +82,37 @@ class DraftOrderService: raise ValidationError("Можно обновлять только черновики заказов") # Обновляем только переданные поля - updatable_fields = [ - 'customer', 'is_delivery', 'delivery_address', 'pickup_shop', - 'delivery_date', 'delivery_time_start', 'delivery_time_end', + # ForeignKey поля требуют специальной обработки + fk_fields = { + 'customer': 'customers.Customer', + 'delivery_address': 'customers.Address', + 'pickup_shop': 'shops.Shop', + } + + simple_fields = [ + 'is_delivery', 'delivery_date', 'delivery_time_start', 'delivery_time_end', 'delivery_cost', 'payment_method', 'customer_is_recipient', 'recipient_name', 'recipient_phone', 'is_anonymous', 'special_instructions', 'discount_amount' ] - for field in updatable_fields: + # Обрабатываем ForeignKey поля + for field_name, model_path in fk_fields.items(): + if field_name in data and data[field_name]: + # Получаем модель + app_label, model_name = model_path.split('.') + from django.apps import apps + Model = apps.get_model(app_label, model_name) + + # Получаем объект по ID + try: + instance = Model.objects.get(pk=data[field_name]) + setattr(order, field_name, instance) + except Model.DoesNotExist: + pass # Игнорируем несуществующие объекты + + # Обрабатываем простые поля + for field in simple_fields: if field in data: setattr(order, field, data[field])