Я ищу способ сделать это:
qs = MyModel.objects.filter(mystring__like="____10____")
#Which would create a sql clause
... LIKE '____10____'
вместо того, чтобы вести себя так:
qs = MyModel.objects.filter(mystring__icontains="____10____")
#Which creates a sql clause
... LIKE %\_\\_\\_\\_10\\_\\_\\_\\_%
Я знаю, что могу использовать фильтр регулярных выражений, но это значительно медленнее и более подвержено ошибкам, чем просто использование встроенной функции подстановочных знаков mysql (я проверял это непосредственно в mysql, строки запросов достаточно длинные, чтобы разница была существенная).
EDIT:
разобрался, как это сделать с помощью метода .extra () с помощью madisvain.
qs = MyModel.objects.extra(where=["`mystring` LIKE '____10____'"])
С точки зрения разницы в производительности, 2000 случайных запросов с использованием регулярных выражений заняли 20,5 секунд, при этом 2000 случайных запросов занимают 6 секунд.