gpt4 book ai didi

python - 查询集 : Compare a field with a substring of another field of the same model

转载 作者:太空狗 更新时间:2023-10-30 01:04:51 24 4
gpt4 key购买 nike

我正在尝试检查 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 版本。

工单已打开并接受: https://code.djangoproject.com/ticket/29155

最佳答案

奇怪的错误,看起来像 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com