Django: имя 'filter_name__icontains' не определено

Я работаю над пользовательским фильтром в моем приложении Django (DRF).

Базовая фильтрация (iexact) работает:

queryset = queryset.filter(**{filter_name: term.get(filter_name)}) # OK

Но я хочу фильтровать поля CharFields с помощью логики icontains:

queryset = queryset.filter(**{filter_name__icontains: term.get(filter_name)}) # ERROR

Текст ошибки

NameError: имя 'filter_name__icontains' не определено

Вопрос: как я могу поддержать фильтрацию иконок в моей функции?

Мой код

from django.db.models import QuerySet, CharField
from rest_framework.filters import BaseFilterBackend
from rest_framework.request import Request


    class AbstractFilterBackend(BaseFilterBackend):
        @staticmethod
        def __execute_default_filters(queryset, terms: list):
            for term in terms:
                filter_name = next(iter(term.keys()))
    
                if hasattr(queryset.model, filter_name):
                    if queryset.model._meta.get_field(filter_name).__class__ is CharField:
                        queryset = queryset.filter(**{filter_name__icontains: term.get(filter_name)})
                    else:
                        queryset = queryset.filter(**{filter_name: term.get(filter_name)})
    
            return queryset

В то время как filter_name является переменной, вы не определили filter_name__icontains. Для этого можно использовать форматирование строки:

queryset = queryset.filter(**{f'{filter_name}__icontains': term.get(filter_name)})
Вернуться на верх