作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试检查 Charfield (charfield_1) 的前 3 个字符是否与同一模型的另一个 Charfield (charfield_2) 相似。
尝试过:
User.objects.filter(charfield_2__startswith=Substr('charfield_1', 1, 3))
尝试使用 F 和 Func 但没有成功。我不断得到:
django.db.utils.DataError: invalid input syntax for integer: "1%"
LINE 1: ...CE(REPLACE((SUBSTRING("model_name"."charfield_2", '1%', 3)),...
知道如何使这项工作成功吗?我想要一个使用 ORM 的解决方案来避免性能问题。
更新:
在检查 ORM 生成的查询和错误消息后,当我使用 startswith 或包含查找表达式时,第二个 Substr 参数似乎被替换为非整数。
例如:Substr('charfield_1', 1, 3) 替换为 Substr('charfield_1', '%1%', 3)
我使用的是 2.0.2 版本。
最佳答案
奇怪的错误,看起来像 Django 的错误?在家里,使用 1.11,这有效:
from django.db.models.functions import Substr
User.objects.annotate(f1=Substr('charfield_1', 1, 3), f2=Substr('charfield_2', 1, 3)).filter(f1=F('f2'))
关于python - 查询集 : Compare a field with a substring of another field of the same model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853052/
我是一名优秀的程序员,十分优秀!