Исправление проблем с сохранением адреса, получателя и даты доставки

- Исправлено: адрес теперь сохраняется для черновиков заказов
- Исправлено: получатель корректно предзаполняется при редактировании заказа
- Исправлено: адрес при редактировании отображается в режиме 'новый' для возможности редактирования
- Исправлено: дата доставки корректно предзаполняется при редактировании заказа
- Исправлено: при редактировании получателя обновляется существующий объект вместо создания нового
- Улучшена логика обработки Delivery для черновиков (создание с опциональными полями)
- Улучшена логика обновления получателя через загрузку заказа из БД с select_related
This commit is contained in:
2025-12-25 00:30:27 +03:00
parent 98470c83af
commit 298d797286
5 changed files with 192 additions and 91 deletions

View File

@@ -95,7 +95,22 @@ class AddressService:
if not name or not phone:
return None
# Проверяем, есть ли уже такой получатель в БД
# Если у заказа уже есть получатель - обновляем его вместо создания нового
# Загружаем заказ из БД, чтобы получить актуального получателя
if order.pk:
try:
# Order уже импортирован в начале файла
db_order = Order.objects.select_related('recipient').get(pk=order.pk)
if db_order.recipient:
# Обновляем существующего получателя
db_order.recipient.name = name
db_order.recipient.phone = phone
# Сохранять будем в views.py, здесь просто возвращаем объект
return db_order.recipient
except Order.DoesNotExist:
pass
# Проверяем, есть ли уже такой получатель в БД (по имени и телефону)
existing_recipient = Recipient.objects.filter(
name=name,
phone=phone