当前位置: 首页 > 面试题库 >

在Django中查询全名

徐文斌
2023-03-14
问题内容

如何在Django中查询全名?

为了明确起见,我本质上想创建一个临时列,将first_name和last_name组合在一起以给出一个全名,然后对它进行LIKE,如下所示:

select [fields] from Users where CONCAT(first_name, ' ', last_name) LIKE '%John Smith%";

上面的查询将返回所有名为John Smith的用户。如果可能的话,我想避免使用原始SQL调用。

我正在专门讨论的模型是django.contrib.auth.models用户模型。直接更改模型不是问题。


问题答案:

这个问题是很久以前发布的,但是我遇到了类似的问题,在这里很难找到答案。接受的答案仅允许您按first_name和last_name查找完全匹配。第二个答案要好一些,但仍然很糟糕,因为您尽可能多地访问数据库。这是我的解决方案,将first_name和last_name注释在一起并在此字段中搜索:

from django.db.models import Value as V
from django.db.models.functions import Concat   

users = User.objects.annotate(full_name=Concat('first_name', V(' '), 'last_name')).\
                filter(full_name__icontains=query)

例如,如果此人的名字是John Smith,则可以通过键入john smith,john,smith,hn smi等找到他。它仅命中数据库。我认为这将是您在公开帖子中想要的确切SQL。



 类似资料:
  • 问题内容: 我试图弄清楚如何在Django中编写“不在”风格的查询。例如,我正在考虑的查询结构将如下所示。 假设模型名为table1和table2,django语法会是什么样? 问题答案: 排除功能的作用类似于你要查询的运算符。该属性告诉查询以返回value_list一级列表。因此,…最后,你IDs将从中获得列表,你将用该列表定义用户中的条件,该条件将被exclude函数拒绝。

  • 问题内容: 我有点困惑如何使用在Django的。例如,一个对象Blog ,以及与该对象相关的attribute entry_set。是什么意思? 如果有人可以使用此示例显示可能的输出,我将不胜感激。 问题答案: 你看到的是反向相关的对象查找。 在你的示例中: 现在,给定类型为的对象,你将可以访问相关对象-这是一个正向关系。该是一个反向查找类变量的Django为你看跌期权。 因此,给定对象-你将执行

  • 问题内容: 建议的用于检查查询是否返回任何结果的惯用法是什么? 例: 我想有几种不同的检查方法,但是我想知道一个有经验的Django用户将如何做。文档中的大多数示例只是忽略了什么都没有发现的情况… 问题答案:

  • 问题内容: (这是SQL连接时线程的django版本:选择一对多关系中的最后一个记录) 假设我有一个客户表和一个采购表。每次购买都属于一个客户。我想获得所有客户的清单以及他们的上一次购买。是否可以在没有原始SQL且没有多个数据库查询的情况下完成? 问题答案: 您可以看一下类似的讨论: 从不同类别获取最新对象的Django查询 据我所知,在Django ORM中没有单步执行此操作的方法。 但是您可以

  • 问题内容: 我正在尝试找到一种方法来缓存不会随频率变化的查询结果。例如,来自电子商务的产品类别(手机,电视等)。我正在考虑使用模板片段缓存,但是在这个片段中,我将遍历这些类别的列表。该列表在网站的任何部分都可用,因此在我的文件中。渲染模板时是否总是要发送类别列表?还是有更动态的方法来执行此操作,以使列表始终在模板中可用? 问题答案: 将缓存的查询弹出到Django的缓存中: 然后创建一个上下文处理

  • 我试图使用Django将PostgreSQL表提取到HTML中,当我在PostgreSQL的查询工具中执行空间查询时,我得到了完美的结果,但当我试图从Django执行相同的脚本时,我得到了所有的数据行。谢谢你提前帮忙。 姜戈剧本 HTML