#python #mysql #django #encoding
Вопрос:
У меня есть следующее представление 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
Фильтр нечеткости выглядит так:
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
Я буду получать только результаты, содержащие «Один», никогда не буду получать результаты, содержащие «один», и наоборот.
Я использую MySQL в качестве ядра базы данных, но, насколько я могу судить, мои параметры сортировки верны для поиска без учета регистра:
Я нахожусь на Django 3.x.
Что может быть причиной этого/каков наилучший способ устранения/устранения неполадок?
Комментарии:
1. Запрос
?translation__icontains=One
дает вам те же результаты?2. Нет, это, кажется, находит меня во всех результатах — как будто без какого-либо фильтра вообще
Ответ №1:
У меня было конкретное поле «перевод», настроенное на двоичный код.
Когда я снял этот флажок, все сработало так, как было задумано.