nig*_*ler 5 sql django orm django-queryset
在我的网站上,用户应该能够过滤数字,例如*123*321*,匹配"666 123 555 321 111"或LIKE '%123%321%'.
默认情况下,django的orm会逃脱%-sign.我可以使用正则表达式或原始查询,但有一些解决方法吗?
UPD:我会把它放在这里以显示另一种方式.
integer_search = [] # for colorizing found substrings
if actual['integer']:
integer_match = filter(None, actual['international'].split('*'))
integer_search = integer_match
integer_match = ''.join('%s[[:digit:]]*' % i for i in integer_match)
integers = integers.filter(international__regex=integer_match)
Run Code Online (Sandbox Code Playgroud)
是的,Django取代了所有%和_.来自docs:
这意味着事情应该直观地工作,因此抽象不会泄漏.例如,要检索包含百分号的所有条目,只需将百分号用作任何其他字符
我建议你使用额外的方法.它不是真正的原始sql,虽然看起来很hacky:
YourModel.objects.extra(where=['title LIKE %s'], params=['%123%321%'])
Run Code Online (Sandbox Code Playgroud)