• django QuerySet


    • Django对数据库的封装1——QuerySet
    • 发布时间:2018-02-28 来源:网络 上传者:用户

      关键字: manager 数据库 记录 影响

      发表文章
    • 摘要:   Django对数据库的操作分用到三个类:Manager、QuerySet、Model。Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet是Manager的方法返回的,是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model实例,它里面的方法也是表级方法,前面说了,Django给我们提供了增加表级方法的途径
    •     Django对数据库的操作分用到三个类:Manager、QuerySet、Model。Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet是Manager的方法返回的,是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法,前面说了,Django给我们提供了增加表级方法的途径,那就是自定义manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;Model是一条记录的类,它的功能很强大,里面包含外键实体等,它的方法都是记录级方法(都是实例方法,无类方法),不要在里面定义类方法,比如计算记录的总数,查看所有记录,这些应该放在自定义的manager类中。

      1.QuerySet 1.1 简介

      每个Model都有一个默认的manager类,名为objects,QuerySet有两种来源:通过manager的方法得到、通过QuerySet的方法得到。QuerySet的最初来源就是通过manager的方法。mananger的方法和QuerySet的方法大部分同名,同意思,如filter(),update()等,但也有些不同,如manager有create()、get_or_create(),而QuerySet有delete()等。一个QuerySet包含一个或多个model instance。QuerySet类似于Python中的list,list的一些方法QuerySet也有,比如切片,遍历。

    比如models.Author.objects

    models.Author就是一个model,他有一个manager类,models.Author.objects ,这个类调用all()方法得到queryset对象

    a=models.Author.objects.all()#a就是一个queryset对象

    有些方法,通过manager和通过queryset调用,产生的效果是相同的,比如说filter方法,manager和queryset对象都有这个方法,而且

    models.Author.objects.filter(id__gt=2)

    models.Author.objects.all().filter(id__gt=2)

    调用产生的结果是相同的

  • 相关阅读:
    Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式
    Spring Boot2 系列教程(一)纯 Java 搭建 SSM 项目
    Python 解析XML实例(xml.sax)
    深度学习Tensorflow相关书籍推荐和PDF下载
    气象netCDF数据可视化分析
    Python 操作MySQL 数据库
    用这个库 3 分钟实现让你满意的表格功能:Bootstrap-Table
    浅谈压缩感知(二十六):压缩感知重构算法之分段弱正交匹配追踪(SWOMP)...
    web开发工具flask中文英文书籍-持续更新
    Python 在气象上的应用
  • 原文地址:https://www.cnblogs.com/saolv/p/10285563.html
Copyright © 2020-2023  润新知