首页
学习
活动
专区
圈层
工具
发布

Django model转字典的几种方法

平常的开发过程中不免遇到需要把model转成字典的需求,尤其是现在流行前后端分离架构,Json格式几乎成了前后端之间数据交换的标准,这种model转dict的需求就更多了,本文介绍几种日常使用的方法以供参考...,所有例子均基于Django 2.0环境演示 背景介绍 model内容如下: class Group(models.Model): name = models.CharField(max_length...verbose_name='所属组') def __str__(self): return self.username 需求很简单就是分别把Group和User表中的数据转换成字典格式返回...方法一:直接构建字典 示例代码: >>> _t = Group.objects.get(id=1) >>> >>> dict = { ......'name': _t.name ... } >>> >>> print(dict) {'name': 'GroupA', 'id': 1} 这种方法的好处是方便控制最终返回字典value的格式,例如对于

1.4K40

python测试开发django-15.查询结果转json(serializers)

前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse。...django查询数据库返回json数据有3种方法 serializers转json model_to_dict转字典 values()转list (最简单,推荐!)...如果设置为False,可以传递任何对象进行序列化(否则,只允许dict 实例)。如果safe 为True,而第一个参数传递的不是dict 对象,将抛出一个TypeError。..."psw": "111111", "mail": "0" } } ] } model_to_dict转字典...接下来介绍第二种方法使用model_to_dict方法把查询的queryset序列结果转成字典序列 # helloworld/helloworld/testdb.py from django.http

2.3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Django】聚合在Django的详细解析以及运用在企业级项目里的方法

    第一种方法是从整个QuerySet生成摘要值。例如,想计算所有在售图书的平均价格。Django的查询语法提供了一种描述所有藏书的方法。 传递给聚合()的参数描述了要计算的聚合值。...使用后,它将返回一个“name value”字典,其中“name”是聚合值的标志,“value”是计算的聚合结果。名称是根据字段名称和聚合函数自动生成的。...2 # Interrogate the second object in the queryset >>> q[1] Django Projects> >>> q[1..., Sum >>> Publisher.objects.annotate(Count('book')) (结果字典中将有一个名为“oldest_pubdate”的关键字。...很难直观地理解ORM如何将复杂的查询集转换为SQL查询。因此,如果有疑问,请使用str(queryset.query)`检查SQL并编写大量测试。

    2.4K40

    基于类的通用视图:ListView 和 DetailView

    好在将类视图转换成函数视图非常简单,只需调用类视图的 as_view() 方法即可(至于 as_view 方法究竟是如何将一个类转换成一个函数的目前不必关心,只需要在配置 URL 模式是调用 as_view...不过注意一点的是,在类视图中,从 URL 捕获的命名组参数值保存在实例的 kwargs 属性(是一个字典)里,非命名组参数值保存在实例的 args 属性(是一个列表)里。...下面我们就来将 detail 视图函数转换为等价的类视图 PostDetailView,代码如下: blog/views.py from django.views.generic import ListView...args, **kwargs): # 覆写 get 方法的目的是因为每当文章被访问一次,就得将文章阅读量 +1 # get 方法返回的是一个 HttpResponse 实例...这个方法返回的值是一个字典,这个字典就是模板变量字典,最终会被传递给模板。

    3.1K70

    ORM常用操作

    ,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列...() order_by() reverse() distinct() 特殊的QuerySet values() 返回一个可迭代的字典序列 values_list() 返回一个可迭代的元祖序列...聚合/分组及 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 键的名称是聚合值的标识符,值是计算出来的聚合值。...Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。...项目配置上一个名为django.db.backends的logger实例即可查看翻译后的SQL语句。

    2.3K10

    Django实践-09前后端分离开发入门

    对象,将每个学科的数据处理成一个字典,在将字典保存在名为subjects的列表容器中,最后利用JsonResponse完成对列表的序列化,向浏览器返回JSON格式的数据。...json_dumps_params={‘ensure_ascii’:False}参数 添加 json_dumps_params={‘ensure_ascii’:False} 参数 6.基于bpmappers简化对象转字典操作...为此我们可以使用一个名为bpmappers的三方库来简化将对象转成字典的操作,这个三方库本身也提供了对Django框架的支持。 安装三方库bpmappers。...pip install bpmappers 在polls2的views.py添加映射器代码(实现对象到字典转换)。...polls2 2.在settings.py中注册polls2 3.在polls2的views.py中添加视图函数 4.在urls.py中添加路由 5.运行测试 6.基于bpmappers简化对象转换为

    41510

    Django学习笔记之Django ORM相关操作

    ,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列...聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 键的名称是聚合值的标识符,值是计算出来的聚合值。...Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。...def datetimes(self, field_name, kind, order='ASC', tzinfo=None): # 根据时间进行某一部分进行去重查找并截取指定内容,将时间转换为指定时区时间...项目配置上一个名为django.db.backends的logger实例即可查看翻译后的SQL语句。

    3.9K40

    python 终级篇 django --

    ,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列...聚合查询和分组查询                                 聚合    aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。...Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。...models.UserInfo.objects.raw('select id as nid from userinfo where nid>%s', params=[12,]) # 将获取的到列名转换为指定列名...def datetimes(self, field_name, kind, order='ASC', tzinfo=None): # 根据时间进行某一部分进行去重查找并截取指定内容,将时间转换为指定时区时间

    3.2K20

    Django 模型中自定义Manager和模型方法

    (至于行级功能,也就是只作用于模型实例对象的函数,则通过自定义模型方法实现)....()方法来重写manager的基础Queryset.get_queryset()应该按照你的需求返回一个Queryset....(table-wide).模型方法应该只对特殊模型实例起作用. from django.db import models class Person(models.Model): first_name...上面的示例中,clean()引发的ValidationError异常通过一个字符串实例化,所以它将被保存在一个特殊的错误字典中,键为NON_FIELD_ERRORS.这个键用于整个模型出现的错误而不是一个特定字段穿线的错误...except ValidationError as e: non_field_errors = e.message_dict[NON_FIELD_ERRORS] 若要引发一个特定字段的异常,可以使用一个字典实例化

    3.2K20

    Django之ORM其他骚操作

    Django ORM执行原生SQL # extra # 在QuerySet的基础上继续执行子语句 # extra(self, select=None, where=None, params=None,...####### def all(self) # 获取所有的数据对象 def filter(self, *args, **kwargs) # 条件查询 # 条件可以是:参数,字典...models.UserInfo.objects.raw('select id as nid from userinfo where nid>%s', params=[12,]) # 将获取的到列名转换为指定列名...def datetimes(self, field_name, kind, order='ASC', tzinfo=None): # 根据时间进行某一部分进行去重查找并截取指定内容,将时间转换为指定时区时间...终端打印SQL语句 在Django项目的settings.py文件中,在最后复制粘贴如下代码:即为你的Django项目配置上一个名为django.db.backends的logger实例即可查看翻译后的

    1.2K50

    django 1.8 官方文档翻译: 3-1-3 Django 的快捷函数

    可选的参数 context 添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。...可选的参数 context 添加到模板上下文中的字典。默认是个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。...必选的参数 klass 获取该对象的一个Model 类,Manager或QuerySet 实例。 **kwargs 查询的参数,格式应该可以被get() 和filter()接受。...然而,你还可以传递一个QuerySet实例: queryset = Book.objects.filter(title__startswith='M') get_object_or_404(queryset...必选的参数 klass 获取该列表的一个Model、Manager 或QuerySet 实例。 **kwargs 查寻的参数,格式应该可以被get() 和filter() 接受。

    1K20

    pythonjson字符串转json对象_gson解析json嵌套数组

    dict是用来存储对象属性的一个字典,其键为属性名,值为属性的值。dict可直接json化。...2嵌套对象转json: 刚才的People类可看做是嵌套类,即有一个属性是另一个类的实例,此时,若用上面的方法来json化Person对象,会有问题,如下【错误】: def simple_person(...3django的model转json: 首先有个model类 class Person(models.Model): name = models.CharField(max_length=50, null...此时数据库里已经插入了一些数据 这里要提一下网上比较常见的一种方式,需要用到django.core.serializers,这个类的serialize(format, queryset, **options...,其不能直接json化(通过serializer得到的不好看,也不好处理,大量的属性处理还比较费劲),需要将其遍历得到每个对象,然后将其属性字典加入到list中,最后将其添加到通用dict中 pers

    4.8K10

    Django之ORM

    在Django中具体的对应方式为: 类名对应数据库中的表名 类名对应数据库中的表名 类属性对应数据库里的字段 类实例对应数据库表里的一行数据 类实例对象的属性对应这行中的字段的值 一.数据库的连接 Django...对象,那么它还有以下方法 values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列 exclude...2.QuerySet对象 查询的结果集就是一个QuerySet对象 QuerySet对象就像是一个列表,列表存储着查询出的结果,可以迭代,可以切片 Django中QuerySet对象是惰性的,即你得到这个对象的时候并没有真正的在数据库中执行...对象进行计算得到一个结果值作为字典中的值放到一个字典中 这里先引入一些聚合方法 from django.db.models import Avg,Min,Sum,Max 举例: result=student.objects.all...().aggregate(Max('num')) print(result) 得到的是一个字典:{‘num__max’: 3} 若你想给这个字典的key换一个名字,可以使用: result=student.objects.all

    1.4K30

    Django 官方推荐的姿势:类视图

    好在将类视图转换成函数视图非常简单,只需调用类视图的 as_view() 方法即可(至于 as_view 方法究竟是如何将一个类转换成一个函数的目前不必关心,只需要在配置 URL 模式是调用 as_view...不过注意一点的是,在类视图中,从 URL 捕获的路径参数值保存在实例的 kwargs 属性(是一个字典)里,非路径参数值保存在实例的 args 属性(是一个列表)里。...下面我们就来将 detail 视图函数转换为等价的类视图 PostDetailView,代码如下: blog/views.py from django.views.generic import ListView...args, **kwargs): # 覆写 get 方法的目的是因为每当文章被访问一次,就得将文章阅读量 +1 # get 方法返回的是一个 HttpResponse 实例...# 之所以需要先调用父类的 get 方法,是因为只有当 get 方法被调用后, # 才有 self.object 属性,其值为 Post 模型实例,即被访问的文章 post

    1.6K20

    如何将 Oracle 单实例数据库转换为RAC数据库?

    墨墨导读:本文来自墨天轮用户投稿,文章详述安装一套RAC环境,并把单实例数据库通过通过rman还原到这个环境(通常如果是生产环境,我们会搭建从RAC到单实例数据库的ADG,以减少停机时间)。...单实例数据库转换为RAC数据库,Oracle 11.2.0.4 首先,安装一套RAC环境,并把单实例数据库通过通过rman还原到这个环境(通常如果是生产环境,我们会搭建从RAC到单实例数据库的ADG,以减少停机时间...然后生成一个源库(单实例数据库)spfile: startup pfile=/home/oracle/orcld/spfile.orclddb.tmp 08:07:25 sys@orclddb>show...Elapsed: 00:00:28.51 添加实例2的undo表空间: 08:28:46 @>CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '+DATADG' SIZE...然后启动数据库,检查2个数据库实例是否都正常了 SYS@orclddb2>startup ORACLE instance started.

    1.7K20

    Django之ORM 对象-关系映射(一)

    Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。 通过 django 创建的数据库模型 ? 续 ? 生成的 mysql 数据库表 ?...Django基础篇-模型基础 基本情况: 每个模型都是一个 Python 类,它是 django.db.models.Model 的子类。 ? 模型的每个属性都代表一个数据库字段。... Tb.objects.values(*field) 返回一个 ValueQuerySet — 一个特殊的 QuerySet,运行后得到的并不是一系列 model 的实例化对象,而是一个可迭代的字典序列... Tb.objects.values_list(*field) 它与 values() 非常相似,它返回的是一个元组序列,values 返回的是一个字典序列。 ?... Tb.objects.exists() 如果 QuerySet 包含数据,就返回 True,否则返回 False。 ?

    1.3K30

    Django ORM那些相关操作

    ,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列...包含数据,就返回True,否则返回False 返回QuerySet对象的方法 all() filter() exelude() order_by() reverse() distinct() 特殊的QuerySet...values()       返回一个可迭代的字典序列 values_list() 返回一个可迭代的元祖序列 返回具体的对象 get() first() last() 返回布尔值的方法 exists(...聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 键的名称是聚合值的标识符,值是计算出来的聚合值。...Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。

    2.6K60

    django 1.8 官方文档翻译: 2-5-6 多数据库

    该设置映射数据库别名到一个数据库连接设置的字典,这是整个Django 中引用一个数据库的方式。字典中的设置在 DATABASES 文档中有完整描述。 你可以为数据库选择任何别名。...Django 要求default 数据库必须定义,但是其参数字典可以保留为空如果不使用它。...Django 然后依次测试每个路由直至找到一个数据库的建议。如果找不到建议,它将尝试Hint 实例的当前_state.db。...首先,你可以清除实例的主键。...多数据库上使用原始游标 如果你正在使用多个数据库,你可以使用django.db.connections来获取特定数据库的连接(和游标):django.db.connections是一个类字典对象,它允许你使用别名来获取一个特定的连接

    1.9K20
    领券