Django:通过“参数具有字段值的一部分”来过滤查询集?

阿夸塔普

我有一个简单的模型:

class Place(models.Model):
    name = models.CharField()

并且它具有一些有代表性的名称,如StarbucksMcDonald'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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过仅检查一部分来过滤查询集

更有效的方法来过滤对象数组的一部分?

正则表达式以匹配具有特定值一部分的所有项目集

用查询中的值替换字段的一部分

在字段的一部分上执行Django查询

具有特定值时省略mongo数组的一部分

PHP检查值是否是具有共同差异的数字序列的一部分

具有部分的动态表单仅将字段添加到最后一部分

如何在仅连接外部查询集的一部分的Django中创建ForeignKey?

如果初始makemigrations的一部分,对查询集使用选择的Django表单会导致错误

如何在日志记录中过滤路径的一部分(不是参数)?

检查选择中的值是否为其他值集的一部分

如何过滤函数输出的一部分

过滤列表的一部分?

根据现有字段的第一部分填充新字段

如何检索作为 InputListItem 一部分并具有聚合绑定的 RadioButton 的绑定属性的值?

如何在具有多个值的列中选择字符串的一部分

“多部分主体必须至少具有一部分”

SSRS 报告参数不是查询的一部分

将参数作为查询字符串或 url 的一部分传递?

SSRS:将报告参数设置为查询的一部分

如何搜索字段的一部分?

Django通用表单集ManytoManyField不是清理数据的一部分

如何使用replace语句替换1000行字段值的一部分

Python过滤带有键值的嵌套字典并打印一部分

公式查询的最后一部分

卡在linq查询的一部分上

如何从“列表”视图中分割字段的一部分– Django Rest Framework

Python的一部分,忽略了参数