微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

django QuerySet对象转换成字典格式

简介

Django ORM用到三个类:ManagerQuerySetModel

Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet:Manager类的一些方法会返回QuerySet实例,QuerySet是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法

前面说了,Django给我们提供了增加表级方法的途径,那就是自定义manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;django.db.models模块中的Model类,我们定义表的model时,就是继承它,它的功能很强大,通过自定义model的instance可以获取外键实体等,它的方法都是记录级方法(都是实例方法,貌似无类方法),不要在里面定义类方法,比如计算记录的总数,查看所有记录,这些应该放在自定义的manager类中。

1. QuerySet

django QuerySet对象转换成字典对象

>>> from django.contrib.auth.models import User  
>>> from django.forms.models import model_to_dict  
>>> u = User.objects.get(id=1)  
>>> u_dict = model_to_dict(u)  
>>> type(u)  <class 'django.contrib.auth.models.User'>  
>>> type(u_dict)  <type 'dict'>

通过使用values方法

>>> from django.contrib.auth.models import User  
>>> result=User.objects.all().values()
>>> list_result = [entry for entry in result]
>>> print(list_result )
[{'id':1,'username':'陈新明','email':'[email protected]'}]

>>> result=User.objects.all().values('id','username')
>>> list_result = [entry for entry in result]
[{'id':1,'username':'陈新明'}]

QuerySet 方法属性

  • aggregate

  • all                返回所有的QuerySet

  • annotate

  • as_manager

  • bulk_create

  • bulk_update

  • complex_filter

  • count            返回QuerySet的数量    返回整数

  • create

  • dates

  • datetimes

  • db

  • defer,

  • delete

  • difference         对QuerySet数据去重

  • distinct

  • earliest

  • exclude

  • exists            检查QuerySet是否有数据 返回True/False

  • explain

  • extra

  • filter              过滤

  • first                返回QuerySet中第一个

  • get

  • get_or_create

  • in_bulk

  • intersection

  • iterator

  • last                返回QuerySet中最后一个

  • latest

  • model            QuerySet属于哪一个model

  • none

  • only

  • order_by        QuerySet排序

  • ordered

  • prefetch_related

  • query

  • raw

  • resolve_expression

  • reverse             QuerySet顺序颠倒

  • select_for_update

  • select_related

  • union

  • update,

  • update_or_create

  • using

  • values

  • values_list


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐