我正在使用django-filter并拥有4种语言的项目。我过滤的模型字段被modeltranslation翻译成4种不同的语言。问题是,我无法使用所有语言进行过滤。仅适用于默认语言。过滤代码:
enums = attribute.enum_group.enums.all()
choices = [('', '-')] + [(x.value, x.value) for i, x in enumerate(enums)]
lookup = 'variants__eav_values__value_enum__value'
#value_enum__value is translated to 4 languages
self.filters[attribute.slug] = django_filters.ChoiceFilter(
label=attribute.name,
name=lookup,
choices=choices
)
所以基本上这会创建下拉过滤器并用选项填充它。 name=lookup
与SomeProduct.objects.filter(variants__eav_values__value_enum__values='someval')
相同。
现在正如我所说的那样,默认情况下工作正常,英语。如果我切换到其他语言,过滤不起作用。我认为由于某种原因它不会改变当前的语言。此外,如果我硬编码语言,lookup = 'variants__eav_values__value_enum__value_ru'
它将起作用。但这是愚蠢的解决方案。有没有办法让这项工作变得更好?