Django-фильтр: Как мне определить текущий язык внутри OrderingFilter? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть django_filter FilterSet, который содержит OrderingFilter следующим образом:

from django.utils.translation import get_language
import django_filters

class geographicEntityFilter(django_filters.FilterSet):
        ordering = django_filters.OrderingFilter(
                fields = (
                        ('displayedNames__' + get_language()[0:2],'name'),
                )
        )

Я использую этот фильтр с представлением на основе классов:

class GeographicEntityListView(FilterView):
        def get_context_data(self, **kwargs):
                context = super().get_context_data(**kwargs)
                f = geographicEntityFilter(self.request.GET, queryset=self.get_queryset())
                ...

Что яхотите сделать, это установить имя поля в зависимости от выбранного в данный момент языка пользователем.Метод get_language() всегда возвращает «en» независимо от того, на каком языке сайт.Я предполагаю, что мне нужно получить доступ к языку через request, но я не могу найти никакой документации по этому вопросу.

Это работает в других частях моего кода с другими FilterSets, например, когда я определяю вызываемыйдля QuerySet для ModelChoiceFilter, где доступен request.

Но согласно документации, аргумент fields "принимает синтаксис" список из двух кортежей "... поля могуттакже просто быть повторяемым из строк ".Нет упоминания о вызываемом.

Итак, любая помощь приветствуется.

...