Помимо написания собственного SQL, я думаю, что единственное готовое решение, которое может обрабатывать надежный запрос, такой как подстановочный знак, это регулярное выражение. Если подстановочный знак всегда находится в одном и том же месте, например, за которым следует неполная строка, вы можете использовать тип поиска field__startswith=partial
.
Но в целом, подстановочные знаки = регулярное выражение
http://docs.djangoproject.com/en/dev/ref/models/querysets/#iregex
НО,
У меня есть подозрение, что вы ищете тип поиска фильтра contains
или icontains
.
Если вы хотите сопоставить 'привет', 'элло', 'мир' в 'привет мире':
# first split the string by comma
queries = form.cleaned_data.get('query', '').split(',')
# populate queries list
query_list = [Q(**{'alternative_id__icontains' : query }) for query in queries]
# join queries list with the OR operator
results = MyModel.objects.filter( reduce(operator.or_, query_list) )