Django:搜索短语中各个单词的首字母?
我有一个名为 Author
的 Django 模型,其中有一个名为 name
的字段,该字段未分为姓氏/名字:
class Author(models.Model):
name = models.CharField(max_length=200, unique=True)
例如,我有一个作者条目,其中包含命名为“唐纳德·高德纳”。
现在我想按名称进行查询,在 name
字段中每个单词的开头使用 istartswith 。
因此,我希望能够使用“Kn
”进行查询,并返回“Donald Knuth
”。
比如:
authors = Author.objects.filter(name__word__istartswith="Kn")
这在 Django 中可能吗?
I've got a Django model called Author
, with a field called name
, which isn't split up into lastname/firstname:
class Author(models.Model):
name = models.CharField(max_length=200, unique=True)
For example, I have an Author entry with name 'Donald Knuth'.
Now I'd like to query by name, using istartswith at the start of each word within the name
field.
So I'd like to be able to query with 'Kn
', and get 'Donald Knuth
' back.
Something like:
authors = Author.objects.filter(name__word__istartswith="Kn")
Is this possible in Django?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
iregex
查找:这不是很有效,但应该可以。在 MySQL 上,您可以尝试利用全文搜索功能。在其他数据库上,您需要一些额外的工具来进行有效的全文搜索(例如 django-haystack)。
You can use
iregex
lookup:This isn't very efficient, but should work. On MySQL you can try taking advantage of full-text search features. On other DBs you'll need some extra tools to make an efficient full-text search (like django-haystack).
对于 MySQL,[[:<:]] 匹配单词的开头。
For MySQL, [[:<:]] matches the beginning of the word.