У меня есть 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
"принимает синтаксис" список из двух кортежей "... поля могуттакже просто быть повторяемым из строк ".Нет упоминания о вызываемом.
Итак, любая помощь приветствуется.