我有一个名为“用户”的 django 模型,它存储了一些关于人的基本信息,即名字和姓氏。我目前在我的 django 模型中进行了简单的搜索,如果用户输入名字,django 查询集将返回前 10 个匹配项,按姓氏排序。
例如,目前,如果您搜索“Sam”,您可能会得到以下结果:
- 山姆·雅培
- 塞缪尔·贝克
- 萨米·罗杰斯
- 山姆·西蒙斯
代码很简单:
User.objects.filter(Q(first__istartswith=token)).order_by('last')
但是,我想对此进行更改,以便首先返回任何完全匹配的名字,然后是其余结果。因此,如果有人输入“Sam”,结果应该是:
- 山姆·雅培
- 山姆·西蒙斯
- 塞缪尔·贝克
- 萨米·罗杰斯
(确切的名字首先匹配,按姓氏排序,然后是其余的匹配,按姓氏排序)。
我想把它变成 2 个查询集,然后只组合列表,但我想知道是否可以在 1 个查询中做到这一点,最好坚持使用基本的 django 查询集 API(而不是编写一次性查询)。有谁知道这样做的方法?
提前致谢。