python - Django:搜索短语中单个单词的首字母?

标签 python django django-queryset

我有一个名为 Author 的 Django 模型,其中有一个名为 name 的字段,它没有拆分为姓氏/名字:

class Author(models.Model):
    name = models.CharField(max_length=200, unique=True)

例如,我有一个名为“Donald Knuth”的作者条目。

现在我想按名称查询,在 name 字段中的每个单词的开头使用 istartswith

所以我希望能够使用“Kn”进行查询,并返回“Donald Knuth”。

类似于:

authors = Author.objects.filter(name__word__istartswith="Kn")

这在 Django 中可行吗?

最佳答案

您可以使用 iregex查找:

import re

text = "Kn"
text = re.escape(text) # make sure there are not regex specials
authors = Author.objects.filter(name__iregex=r"(^|\s)%s" % text)

这不是很有效,但应该可以。在 MySQL 上,您可以尝试利用 full-text search features .在其他数据库上,您需要一些额外的工具来进行高效的全文搜索(例如 django-haystack )。

关于python - Django:搜索短语中单个单词的首字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390607/

相关文章:

python - 如何在由 uswgi 提供服务并由 systemd 服务启动的虚拟环境中配置 Django 应用程序?

python - Django rest swagger 无法读取 json api 路径

python Django : join view on the admin interface

django - 如何限制queryset/记录在Django管理站点中查看?

python - 切片后重新排序 Django 查询

使用 FFMpegwriter 的 Python Matplotlib basemap 动画在 820 帧后停止?

python - Boto3 在本地和使用 django 应用程序在弹性 beantalk 上生成不同的链接

python - 创建 RSA SHA-256(DNSSEC 有效) key ?

Django 查询相关字段计数

python - 为什么Python中只将部分内容写入文件?