fix(orders): исправить удаление позиций заказа в формсете

- Исправлена логика удаления inline-форм для позиций заказа
- Добавлена обработка удаления сохранённых и новых форм
- Добавлено поле id и DELETE в OrderItemForm для корректной работы формсета
- Добавлена проверка на null для created_by на странице отладки
- Расширены права доступа к отладочной странице: теперь доступна owner и manager
- Добавлено логирование для отладки процесса обновления заказа
This commit is contained in:
2026-01-18 17:16:34 +03:00
parent ab1e8ebd18
commit 0d882781da
6 changed files with 150 additions and 25 deletions

View File

@@ -461,11 +461,15 @@ class OrderItemForm(forms.ModelForm):
widget=forms.TextInput(attrs={'class': 'form-control', 'step': '0.01', 'min': '0'})
)
# Поле DELETE, которое автоматически добавляется в inline формсете
DELETE = forms.BooleanField(required=False, widget=forms.HiddenInput())
class Meta:
model = OrderItem
fields = ['product', 'product_kit', 'sales_unit', 'quantity', 'price', 'is_custom_price', 'is_from_showcase']
# ВАЖНО: НЕ включаем 'id' в fields - это предотвращает ошибку валидации
fields = ['id', 'product', 'product_kit', 'sales_unit', 'quantity', 'price', 'is_custom_price', 'is_from_showcase']
# ВАЖНО: Теперь включаем 'id' в fields для правильной работы inline формсета
widgets = {
'id': forms.HiddenInput(), # Скрываем поле id, но оставляем его для формсета
'quantity': forms.NumberInput(attrs={'min': 1}),
# Скрываем поля product и product_kit - они будут заполняться через JS
'product': forms.HiddenInput(),