当前位置: 首页 > 编程笔记 >

Django ORM 查询表中某列字段值的方法

罗学真
2023-03-14
本文向大家介绍Django ORM 查询表中某列字段值的方法,包括了Django ORM 查询表中某列字段值的方法的使用技巧和注意事项,需要的朋友参考一下

1.什么是ORM

  • ORM 全拼Object-Relation Mapping.
  • 中文意为 对象-关系映射.
  • 在MVC/MVT设计模式中的Model模块中都包括ORM

2.ORM优势

(1)只需要面向对象编程, 不需要面向数据库编写代码.

  • 对数据库的操作都转化成对类属性和方法的操作.
  • 不用编写各种数据库的sql语句.

(2)实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.

  • 不在关注用的是mysql、oracle...等.
  • 通过简单的配置就可以轻松更换数据库, 而不需要修改代码.

3.ORM劣势

相比较直接使用SQL语句操作数据库,有性能损失.
根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失.

下面看下Django ORM 查询表中某列字段值,详情如下:

场景:

有一个表中的某一列,你需要获取到这一列的所有值,你怎么操作?

解决办法:

有一个model为:Event

方式一:

获取内容:
Event.objects.values('title')

输出内容:
<QuerySet [{'title': '测试feed'}, {'title': '今天'}, {'title': '第三个日程测试'}, {'title': '第四个日程测试'}, {'title': '第五个测试日程'}]>

方式一获取到的是一个QuerySet,内容是键值对构成的,键为表的列名,值为对应的每个值。

方式二:

获取内容:
Event.objects.values_list('title')

输出内容:
<QuerySet [('测试feed',), ('今天',), ('第三个日程测试',), ('第四个日程测试',), ('第五个测试日程',)]>

方式二获取到的也是一个QuerySet,但是内容是元祖形式的查询列的值。

但是我们想要的是这一列的值呀,这怎么是一个QuerySet,而且还包含了列名,或者是被包含在了元祖中?

查看高阶用法,告诉你怎么获取一个值的list,如:

['测试feed', '今天', '第三个日程测试', '第四个日程测试', '第五个测试日程']

到此这篇关于Django ORM 查询表中某列字段值的文章就介绍到这了,更多相关django orm 字段值内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍使用tp框架和SQL语句查询数据表中的某字段包含某值,包括了使用tp框架和SQL语句查询数据表中的某字段包含某值的使用技巧和注意事项,需要的朋友参考一下 有时我们需要查询某个字段是否包含某值时,通常用like进行模糊查询,但对于一些要求比较准确的查询时(例如:微信公众号的关键字回复匹配查询)就需要用到MySQL的 find_in_set()函数; 以下是用find_in_set()函

  • 我在编写HQL查询时遇到困难,无法从我的案例实体中仅选择案例ID、标题和案例状态字段。返回的病例必须根据病例ID进行区分。我不希望包含名称和用户ID字段。我也不想对caseid、title和caseStatus字段使用延迟抓取。请注意,案例状态字段是一对多列表。以下是实体。为了节省空间,省略了getter/setter。 我的目标是检索一个不同的

  • 问题内容: 尝试执行此更新查询时,我不断收到MySQL错误#1054: 这可能是一些语法错误,但我尝试使用内部联接和其他更改,但始终收到相同的消息: 问题答案: 尝试对“ y”使用不同的引号,因为标识符引号是反引号(“`”)。否则,MySQL会“认为”您指向名为“ y”的列。 另请参见MySQL 5文档

  • 我有一个关于过滤特定字段不在值列表中的文档的问题。例如,文档只包含唯一且已索引的“_id”字段。现在我有一个“_id”列表,并想找出“_id”不在“_id”列表中的所有文档。 我可以通过使用$in运算符来实现,例如: 返回列表中ID的所有文档,然后与给定列表进行比较。这种方式的性能对于数千个文档来说还不够好。我想知道是否有更好的方法来做到这一点。例如,是否可以构造一个查询,只返回ID不在列表中的文

  • 我有Solr 5.3.1,需要查询除某些字段之外的所有字段(我需要在某些字段中搜索而不是以这种方式检索字段[/?q=query&fl=field1,field2,field3]) 2.[以下解决方案有效,但需要更多时间] 3.我在data-config.xml中设置了indexed=“false”,它只忽略此字段中的搜索,但是当我搜索所有字段http://localhost:8983/solr/t

  • 我有一个ID列表,我想过滤数据库表中没有的值。 类似这样的事情: 有没有办法用条件查询做到这一点?

  • 我有两个Firestore集合,和。下面是每个文件中的典型文档所包含内容的简化示例。 此设置使查询任何给定用户按时间顺序排序的帖子变得非常容易,只需查找其字段等于该用户的文档引用的文档。 我在iOS/Swift中通过以下方法实现了这一点,尽管我们正在为iOS、Android和Web构建这个应用程序。 是否可以构建我正在描述的查询,或者我将不得不采用这种不太理想的方法?这似乎是一个相当常见的查询用例

  • 问题内容: 我有一个具有唯一的数字运行ID的文档集合,我想找到运行ID最高的文档。 我可以做两个查询。 首先,我可以找到最高的运行ID: 其次,我可以找到具有该运行ID的文档: 有没有办法我可以通过一个查询做到这一点? 问题答案: 您可以通过组合“ sort”和“ size”来实现: 这将返回最高的记录