在django中,这条SQL语句的等价物是什么?
SELECT * FROM table_name WHERE string LIKE pattern;
如何在django中实现这一点?我试过了
result = table.objects.filter( pattern in string )
但这并不管用。我如何实现这一点?
发布于 2013-08-09 14:00:54
使用__contains
或__icontains
(不区分大小写):
result = table.objects.filter(string__contains='pattern')
SQL的等价物是
SELECT ... WHERE string LIKE '%pattern%';
发布于 2015-11-26 21:38:41
falsetru提到的包含和图标使查询类似于SELECT ... WHERE headline LIKE '%pattern%
除了它们之外,您可能还需要具有类似行为的这些命令:startswith、istartswith、endswith、iendswith
制作
SELECT ... WHERE headline LIKE 'pattern%
或
SELECT ... WHERE headline LIKE '%pattern
发布于 2020-01-30 01:55:47
这可以使用Django's custom lookups来完成。我已经在Django-like-lookup application中进行了查找。安装它后,将启用带有%
和_
通配符的__like
查找。
应用程序中所有必需的代码是:
from django.db.models import Lookup
from django.db.models.fields import Field
@Field.register_lookup
class Like(Lookup):
lookup_name = 'like'
def as_sql(self, compiler, connection):
lhs, lhs_params = self.process_lhs(compiler, connection)
rhs, rhs_params = self.process_rhs(compiler, connection)
params = lhs_params + rhs_params
return '%s LIKE %s' % (lhs, rhs), params
https://stackoverflow.com/questions/18140838
复制相似问题