我有一个简单的模型:
class Place(models.Model):
name = models.CharField()
并且它具有一些有代表性的名称,如Starbucks
,McDonald's
等如下所示。
id | name
----+----------
1 | Starbucks
2 | McDonald's
3 | ...
而且我还有一些地名作为查询参数,例如:
我要实现的目标是Place
使用给定参数过滤/获取适当的对象,确定它是否具有place的一部分name
。
如何使用Django的QuerySet API做到这一点?
检查了参考资料和论坛后发现类似以下内容,但没有运气:
Place.objects.get(name__ispartof=PARAM)
# or
Place.objects.get(PARAM__contains=Q('name'))
在Postgres中,我的情况可能等同于:
SELECT id FROM table
WHERE 'Starbucks Pike Place' LIKE CONCAT('%', name, '%')
我是否应该为此执行raw()
SQL查询?
提前致谢。
我想我已经找到了一种不需要原始SQL的可怕方法。希望其他人能够找到更好的东西。
from django.db.models import ExpressionWrapper, CharField, Value, F
param = 'Starbucks Pike Place'
myparam = ExpressionWrapper(Value(param), output_field=CharField())
Place.objects.annotate(param=myparam).filter(param__contains=F('username'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句