diff --git a/backend/api/v1/requests_app/views.py b/backend/api/v1/requests_app/views.py index 1800e917..8d7c49ca 100644 --- a/backend/api/v1/requests_app/views.py +++ b/backend/api/v1/requests_app/views.py @@ -387,11 +387,38 @@ class RequestViewSet(viewsets.ModelViewSet): ) def create(self, request, *args, **kwargs): - """Создание заявки: валидируем write-сериализатором, отвечаем read-сериализатором.""" + """ + Создание заявки: валидируем write-сериализатором, + отвечаем read-сериализатором. + """ + import logging + logger = logging.getLogger(__name__) + + logger.info( + f"[RequestViewSet.create] User: {request.user.id}, " + f"Data keys: {list(request.data.keys())}" + ) + serializer = self.get_serializer(data=request.data) + if not serializer.is_valid(): + logger.error( + f"[RequestViewSet.create] Validation errors: " + f"{serializer.errors}" + ) + logger.error( + f"[RequestViewSet.create] Request data: {request.data}" + ) + serializer.is_valid(raise_exception=True) self.perform_create(serializer) instance = serializer.instance - read = RequestReadSerializer(instance, context=self.get_serializer_context()) + read = RequestReadSerializer( + instance, + context=self.get_serializer_context() + ) headers = self.get_success_headers(read.data) - return Response(read.data, status=status.HTTP_201_CREATED, headers=headers) + return Response( + read.data, + status=status.HTTP_201_CREATED, + headers=headers + ) diff --git a/backend/static/js/components/requestCrudHandler.js b/backend/static/js/components/requestCrudHandler.js index 3f007c96..d9776fa0 100644 --- a/backend/static/js/components/requestCrudHandler.js +++ b/backend/static/js/components/requestCrudHandler.js @@ -122,6 +122,13 @@ export function initRequestCrudHandler(options) { try { const url = saveAs === 'draft' ? `${apiListUrl}?save_as=draft` : apiListUrl; + + // Логируем данные для отладки + console.log('[requestCrudHandler] Creating request with data:'); + for (const [key, value] of formData.entries()) { + console.log(` ${key}:`, value); + } + const response = await fetch(url, { method: 'POST', headers: headers, @@ -130,7 +137,21 @@ export function initRequestCrudHandler(options) { if (!response.ok) { const error = await response.json(); - throw new Error(error.detail || 'HTTP ' + response.status); + console.error('[requestCrudHandler] Validation error:', error); + + // Показываем детали ошибки + let errorMessage = 'Не удалось создать заявление:\n'; + if (error.detail) { + errorMessage += error.detail; + } else if (typeof error === 'object') { + // Форматируем ошибки валидации + for (const [field, messages] of Object.entries(error)) { + const fieldMessages = Array.isArray(messages) ? messages.join(', ') : messages; + errorMessage += `\n${field}: ${fieldMessages}`; + } + } + + throw new Error(errorMessage); } await response.json();