Django возвращает результаты с учетом регистра, несмотря на правильную коллизию базы данных и использование icontains
У меня есть следующее представление DRF:
class DictionaryFuzzyView(generics.ListAPIView):
queryset = Dictionary.objects.filter(disabled=False,).order_by(Length('simplified').asc())
serializer_class = FuzzySerializer
filter_backends = (filters.DjangoFilterBackend, OrderingFilter)
pagination_class = LimitOffsetPagination
ordering_fields = ['id']
filter_class = FuzzyFilter
FuzzyFilter выглядит следующим образом:
class FuzzyFilter(filters.FilterSet):
simplified = filters.CharFilter(field_name='simplified', lookup_expr='contains')
traditional = filters.CharFilter(field_name='traditional', lookup_expr='contains')
pinyin_marks = filters.CharFilter(field_name='pinyin_marks', lookup_expr='contains')
translation = filters.CharFilter(field_name='translation', lookup_expr='icontains')
frequency = filters.CharFilter(field_name='frequency', lookup_expr='exact')
hsk = NumberInFilter(field_name='level', lookup_expr='in')
И я делаю вызов следующим образом:
http://127.0.0.1:8000/api/v1/fuzzy/?translation=One
Я получу только результаты, содержащие "One", но никогда результаты, содержащие "один", и наоборот.
Я использую MySQL в качестве движка базы данных, но, насколько я могу судить, мои колляции корректны для поиска без учета регистра:
Я на Django 3.x.
Что может быть причиной этого/какой лучший метод решения/поиска неисправности?
У меня конкретное поле, перевод, было установлено в двоичном формате.
Когда я снял этот флажок, все заработало как надо.