Django перевод модели для AJAX запроса - PullRequest
0 голосов
/ 14 июля 2020

Я установил пакет Django modeltranslation, и почти все работает нормально ...

Единственное, чего нет, это запросы AJAX, чьи JsonResponses все еще возвращаются на исходном языке . Я не смог найти в документации, как это исправить.

Я использую промежуточное ПО 'django.middleware.locale.LocaleMiddleware', поэтому выбор LANGUAGE_CODE должен быть основан на данных из запроса (т.е. настройках браузера пользователя) . Очевидно, запросы AJAX не получают заметку.

Есть ли способ, чтобы сервер знал LANGUAGE_CODE, входящий из запроса AJAX (кроме жесткого кодирования его в URL-адресе)?

1 Ответ

0 голосов
/ 14 июля 2020

Я получил ответ на Django форумах ^ _ ^

Мне сказали изучить запрос XHR для параметра Content-Language (я даже не знал, что в XHR есть параметр языка ). Именно тогда я увидел, что Content-Language определен правильно.

Значит, AJAX был отвлекающим маневром.

Вот как выглядело мое представление:

obj_list = list(self.object_list.values('fk__name', 'data'))
return JsonResponse({'chart_data': obj_list})

Проблема была в методе values. Когда кто-то его использует, поля, созданные django-modeltranslation, не используются.

Я переключил его на следующие:

return JsonResponse(
      {
          "chart_data": [
              {"fk__name": o.fk.name, "data": o.data}
              for o in self.object_list.select_related('fk')
          ]
      }
)

Не знаю, является ли понимание списка лучшей практикой , но теперь все работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...