首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django 再谈一谈json序列化

我们知道JSON字符串是目前流行的数据交换格式,在pyhton中我们通过json模块,常用的数据类型转化为json字符串。但是,json支持转化的数据类型是有限的。...注意,如果是通过values查询,如UserInfo.objects.values("name"),查询出来的结果虽然也是QuerySet对象,但是其结构是这样的:<QuerySet [{'name':...对于这种情况,我们可以通过list()方法QuerySet 对象转化为列表,这样就可以直接用json.dumps()进行序列化了。...) 观察序列化结果,发现这种方式服务端数据库的表名都暴露了;另外serializers不支持连表序列化,只能拿到另一张表的id。...,在自定义序列化类的default方法中判断,如果是指定的类的实例的话,则将该类转换成dict格式返回,若指定类的实例,则使用json模块默认的序列化方法。

1.2K10

django 1.8 官方文档翻译: 2-5-2 进行原始的sql查询

django提供两种方法使用原始sql进行查询:一种是使用Manager.raw()方法,进行原始查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的sql语句。...例如,__bool__()和__len__()在RawQuerySet中没有被定义,所以所有RawQuerySet转化为布尔值的结果都是True。...查询字段映射到模型字段 raw()方法自动查询字段映射到模型字段。 字段的顺序并不重要。...注意 SQLite后端不支持字典,你必须以列表的形式传递参数。 警告 不要在原始查询中使用字符串格式化!...直接执行自定义sql 有时Manager.raw()方法并不十分好用,你不需要将查询结果映射成模型,或者你需要执行UPDATE、INSERT以及DELETE查询

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

Django使用】第6篇:Django数据库和Admin使用详解。笔记md文档(已分享,附代码)

~共 10 章,31 子模块数据库学习目标能够进行Django数据库配置掌握Django中模型类的定义掌握Django中的迁移命令的使用能够使用Django的ORM进行数据库的增删改查能够说明查询QuerySet...查询满足条件的对象模型类.objects.exclude()QuerySet查询不满条件的对象模型类.objects.order_by()QuerySet查询结果集进行排序模型类.objects.aggregate...'))常用聚合类有:Sum, Count, Max, Min, Avg等返回值是一个字典, 格式: {'属性名__聚合函数': 值}使用时需要先导入聚合类: from django.db.models...()QuerySet查询不满条件的对象模型类.objects.order_by()QuerySet查询结果集进行排序2)QuerySet 提供的方法QuerySet方法返回类型作用get()模型对象查询一个对象...filter()QuerySet查询满足条件的对象exclude()QuerySet查询不满条件的对象order_by()QuerySet查询结果集进行排序aggregate()字典,例如:{'salary

20310

Django】 开发:数据库操作和后台管理

xxx 返回值: QuerySet 返回查询结果容器,容器内存字典,每个字典代表一条数据, 格式为: {‘列 1’: 值 1, ‘列 2’: 值 2} 示例: from bookstore.models...,都要使用聚合查询 不带分组聚合 不带分组的聚合查询是指导全部数据进行集中统计查询 聚合函数【需要导入】: 导入方法: from django.db.models import * 聚合函数: Sum..., Avg, Count, Max, Min 语法: MyModel.objects.aggregate (结果变量名 = 聚合函数 (‘列’)) 返回结果: 由 结果变量名和值组成的字典 格式为: `...方法分组聚合得到分组结果 QuerySet.annotate (名 = 聚合函数 (‘列’)) 返回 QuerySet 结果集,内部存储结果字典 如: pub_count_set = pub_set.annotate...from . import models ... admin.site.register(models.Book) # Book类注册为可管理页面 修改自定义模型类的展现样式 在admin后台管理数据库中对自定义的数据记录都展示为

4K40

重点内容回顾-DRF

4.关联对象的嵌套序列化 4.1PrimaryKeyRelatedField 关联对象序列化为关联对象的主键。...(详情见本文标题4) json.dumps()是字典转换成json字符串 json.loads()是json字符串转换成字典数据 5.4.4反序列化功能 1.数据校验 我们可以调用 is_valid...request.query_params保存解析之后的查询字符串的数据,并且已经解析成了字典或类字典,相当Django原始request对象中的request.GET 2.响应时可以统一返回Response...Response类的对象:传入原始的响应数据,会自动根据客户的请求头中 Accept响应数据转换为对应的格式进行返回,默认是json,仅支持json和html 3.异常处理:如果视图中抛出了未处理异常...数据库查询 属性: queryset(指定视图所使用的查询集) 方法: get_queryset返回视图所使用的查询集 get_object从视图所使用的查询集中查询指定的对象,默认根据pk进行查询

2.4K20

05.Django基础五之django模型层(一)单表操作

(): 查询所有结果结果queryset类型 filter(**kwargs): 它包含了与所给筛选条件相匹配的对象,结果也是queryset... order_by(*field): queryset类型的数据来调用,对查询结果排序,默认是按照id来升序排列的,返回值还是queryset类型                 ...类型的数据来调用,对查询结果反向排序,返回值还是queryset类型 count(): queryset类型的数据来调用,返回数据库中匹配查询(QuerySet...# 条件可以是:参数,字典,Q def exclude(self, *args, **kwargs) # 条件查询 # 条件可以是:参数,字典,Q def select_related...,你却查不出结果,是因为mysql数据库的时区和咱们django的时区不同导致的,了解一下就行了,你需要做的就是django中的settings配置文件里面的USE_TZ = True改为False,

2.9K10

37.Django1.11.6文档

如果没有结果满足查询,get() 引发一个DoesNotExist 异常。...首次对QuerySet进行求值 —— 同时发生数据库查询 ——Django 保存查询结果QuerySet的缓存中并返回明确请求的结果(例如,如果正在迭代QuerySet,则返回下一个结果)。...接下来对该QuerySet 的求值重用缓存的结果。 请牢记这个缓存行为,因为对QuerySet使用不当的话,它会坑你的。...方法 Django 提供了一系列 的QuerySet筛选方法,用于改变 QuerySet 返回的结果类型或者SQL查询执行的方式。...Django管理网站将此内容格式化为JSON结构,因此get_change_message()可以重构以当前用户语言翻译的消息。 自定义代码可能将此设置为纯字符串。

24.2K80

Django 聚合与查询集API实现侧边栏

本文从Django官方文档总结而来,聚合的主要用法和查询集的常见方法做一归纳。 聚合 1....2.django提供了两种生成聚合的方法 1)从整个查询集生成统计值,主要用法:aggregate(*args, **kwargs) aggregate()是QuerySet 的一个终止子句,也就是说...aggregate返回一个字典,包含根据QuerySet 计算得到的聚合值(平均数、和等等)。...我们想要汇总QuerySet.中每本书里的这种关系。逐个对象的汇总结果可以由annotate()子句生成。当annotate()子句被指定之后,QuerySet中的每个对象都会被注上特定的值。...annotate()子句的返回结果是一个查询集 (QuerySet);这个 QuerySet可以用任何QuerySet方法进行修改,包括 filter(), order_by()。

1.4K20

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

1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager....每个Django模型至少有一个manager,你可以创建自定义manager以定制数据库的访问....现在我们可以进行下面的操作: >>> Books.objects.title_count('django') #这是我们自定义的manager中的查询方法 2 >>> Books.objects.filter...(title__icontains='django').count() # 默认的查询方法依然可用 2 这样我们可以经常使用的查询进行封装,就不必重复写代码了....因为覆盖get_queryset()了,你可能接受到一个无用的返回对像,你必须避免这种情况. 2.自定义模型方法 为了给你的对像添加一个行级功能,那就定义一个自定义方法.鉴于manager经常被用来用一些整表操作

2.7K20

Django学习之八:forms组件【对

校验数据完后,结果无非两种情况:a) 校验通过,django对校验过了的form_obj,会将通过了的数据放入form_obj.cleaned_data 字典中。...所表示,这个实际是一个Choice Field,特殊是它的choices 是一个model QuerySet 也就是一个查询出的queryset结果。...ModelMutipleChoiceField和ModelChoiceField 对应的choice显示调用的queryset中model对象的__str__() 方法的结果,所以model定义时,约定都是要定义...form.cleaned_data 得到校验干净的数据,数据会格式化为对应的python对象类型。 form.initial 是初始化数据字典。注意初始化是是不会将form变为绑定数据的form的。...关于设置错误校验错误信息为中文: pass 就是通过error_messages 定义自己form 实例 包括自定义 局部和全局 钩子 from django import forms from django.forms

2.1K30

Django 2.0 新特性 转

2.admin后台对移动端更加友好 Django最受大家欢迎的admin后台,具有响应式特性,支持主流的移动设备。 3.Window 表达式 新的Window表达式允许为查询集添加一个OVER从句。...django.contrib.gis地理框架 为AsGeoJSON、GeoHash和GeoHash方法,isvalid和distance查询增加MySQL支持; 添加Azimuth和LineLocatePoint...()增加of参数,但只支持PostgreSQL和Oracle数据库; QuerySet.in_bulk()新增field_name参数; CursorWrapper.callproc()现在接收可选的字典类型关键字参数...; QuerySet.values_list()新增named参数,用于获取命名的元组结果; 新的FilteredRelation类允许为查询集增加一个ON从句; Pagination分页 增加Paginator.get_page...QuerySet.reverse()和last()不能用于切片后的查询集 对切片后的查询集使用反转和获取最近对象的操作弹出异常,如下所示: >>> Model.objects.all()[:2].reverse

2.6K20

Django ValuesQuerySet转json方式

查询内容直接转为字典形式,方便后续使用; 可以指定查询哪一列;例如Apple.objects.all().values(‘id’),只会查询表中的id这一列; 补充知识:Python对象转json【包括嵌套对象转...json,django的model转json】 背景: 给app写接口时经常会遇到一个model转为json返回。...此时数据库里已经插入了一些数据 这里要提一下网上比较常见的一种方式,需要用到django.core.serializers,这个类的serialize(format, queryset, **options...)方法,很明显,这个方式只能作用与queryset格式,并且通过例子(不再列出),得到的结果类似这种 [{“model”: “polls.person”, “pk”: 2, “fields”: {“name...QuerySet,其不能直接json化(通过serializer得到的不好看,也不好处理,大量的属性处理还比较费劲),需要将其遍历得到每个对象,然后将其属性字典加入到list中,最后将其添加到通用dict

97520
领券