Django过滤器:如何确定OrderingFilter中的当前语言?

时间:2019-04-08 19:10:19

标签: django internationalization django-filter

我有一个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一起在我代码的其他部分使用,例如当我为ModelChoiceFilter的QuerySet定义可调用对象时,其中request可用。

但是根据文档,fields参数“接受“二元组列表”语法...字段也可能只是字符串的迭代”。没有提及可通话对象。

因此,感谢您的帮助。

0 个答案:

没有答案