AJAX 请求的 Django 模型翻译

Django modeltranslation for AJAX request

我已经安装了 Django modeltranslation 包,几乎一切正常...

唯一没有的是 AJAX 请求,其 JsonResponses 仍以原始语言返回。我在文档中找不到如何修复它。

我正在使用 'django.middleware.locale.LocaleMiddleware' 中间件,因此 LANGUAGE_CODE 选择应基于请求中的数据(即用户的浏览器设置)。显然,AJAX 个请求没有收到备忘录。

有没有办法让服务器知道来自 AJAX 请求的 LANGUAGE_CODE(除了在 URL 中硬编码)?

我在Django论坛上得到了答案^_^

我被告知要查看 Content-Language 参数的 XHR 请求(我什至不知道 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')
          ]
      }
)

不知道列表理解是否是最佳实践,但现在一切正常!