Мне нужно отфильтровать набор запросов на основе языкового поля (кода языка) из входных данных. Например, на итальянском языке пользователь может искать «итальянский». Итак, первое, что я сделал, это создал список кортежей, содержащий (lang_code, name_translated), как показано ниже:
from django.conf.global_settings import LANGUAGES
from django.utils.translation import get_language_info
# List of tuples (code, translated_name)
TRANSLATED_LANGUAGES = [(l[0], get_language_info(l[0])['name_translated']) for l in LANGUAGES]
Вот метод фильтрации:
def filter_by_languages(self, queryset, name, value):
for l in TRANSLATED_LANGUAGES:
if value in l[1].lower():
queryset.filter(Q(lang_src__code__iexact=l[0]))
return queryset.distinct()
Возвращает набор запросов, который не фильтруется. Я должен что-то неправильно понять.