一 必知必会13条:

  返回对象列表的:

    1.all() :查所有

    2.filter() :查一行

    3.exclude():排除(里面可以写条件,意思除了这个条件的所有)

    4.order_by():默认升序(可以写条件,加符号为降序)

    5.reverse() :它是对已经排好序的基础上进行翻转。

    6.distinct():从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。)

  返回特殊的对象列表:

    7.values() :返回一个列表,里面是字典,括号里可以加条件

    8.values_list() :返回一个列表,里面是元祖,括号里可以加条件

  返回具体对象的:

    9.get():获取某一条,娶不到就报错

    10.first():默认按id取第一个,娶不到就是none,不会报错。

    11.last();默认按id取最后一个,娶不到就是none,不会报错。

    返回布尔值的:

    12.exists():判断查询结果是否存在

    返回数字的:

    13.count(): 计数 。

二 模糊查询,神奇的下划线:

models.Tb1.objects.filter(id__lt=, id__gt=)   # 获取id大于1 且 小于10的值

models.Tb1.objects.filter(id__in=[, , ])   # 获取id等于11、、33的数据
models.Tb1.objects.exclude(id__in=[, , ]) # not in models.Tb1.objects.filter(name__contains="ven") # 获取name字段包含"ven"的
models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感 models.Tb1.objects.filter(id__range=[, ]) # id范围是1到3的,等价于SQL的bettwen and 类似的还有:startswith,istartswith, endswith, iendswith  date字段还可以:
models.Class.objects.filter(first_day__year=)

三 orm外键

  查询:

     一对一:(不存在正反向,直接查)

models.Author.objects.get(id=).au.tel # 通过id查电话 (基于对象的)
ss= models.Author.objects.filter(name='刘能').values('au__tel')[0]['au__tel'] # 通过名字拿电话,基于字段查

    一对多:

基于对象查:
  正向查(假设书和出版设是一对多):
  models.Book.objects.get(id=).publis.name # 通过书的id查出版社
  反向查:
  models.Publish.objects.get(name='锅盖头出版社').book__set.all() # 通过出版社拿书
基于字段查:
  正向查(正向按属性,反向按表名):
    models.Book.objects.filter(title='天龙九部').values(publis__name) # 通过书查出版设, 前面的是条件
反向查 
  models.Publish.objects.filter(name='锅盖头出版社').values(book__title) # t通过0出版社拿书

  多对多:

基于对象查:
  正向查:(书和作者)
   models.Book.objects.get(id=1).authors.all().values(name)# 通过书拿作者
  反向查:

  models.Author.objects.get(name=刘能).book_set.all().values('title') 通过作者拿书
基于字段查询(正向按属性,反向按表名):
  正向查
  models.Book.objects.filter(title='天龙九部').values(authors__name) #通过书拿作者
  反向查:
  models.Author.objects.filter(name='刘能').values(book__title) # 通过作者拿书
 

ajango--orm操作的更多相关文章

  1. Python/Django(CBV/FBV/ORM操作)

    Python/Django(CBV/FBV/ORM操作) CBV:url对应的类(模式) ##====================================CBV操作============ ...

  2. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  3. Django中ORM操作

    ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...

  4. Django的ORM操作

    ORM操作 select * from tb where id > 1 # 对应关系 models.tb.objects.filter(id__gt=1) models.tb.objects.f ...

  5. python 外键用法 多对多关系 ORM操作 模板相关

    一.app/models中写类(设计表结构) 1.普通类 class  A(models.Model): id=modles.AutoField(primary_key=True) name=mode ...

  6. Django之ORM操作

    Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...

  7. Django之ORM操作(聚合 分组、F Q)

    Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.   键的名 ...

  8. python第一百零五天 ---Django 基础 路由系统 URL 模板语言 ORM 操作

    一 路由系统 URL 1 url(r'^index/',views.index) url(r'^home/', views.Home.as_view()) 2 url(r'^detail-(\d+). ...

  9. Django ORM 操作 必知必会13条 单表查询

    ORM 操作 必知必会13条 import os # if __name__ == '__main__': # 当前文件下执行 os.environ.setdefault('DJANGO_SETTIN ...

  10. 在pycharm中进行ORM操作

    打开manage.py, 复制 import..... if.......os.....  导入django,开启django, 导入app中的models  orm操作 import os if _ ...

随机推荐

  1. mysql存储过程和执行计划案例

    开启event_scheduler指令: SET GLOBAL event_scheduler = ON;SET @@global.event_scheduler = ON;SET GLOBAL ev ...

  2. iis 支持 .netcore 环境

    1,安装 dotnet-win-x64 https://dotnet.github.io/2,安装 DotNetCore.1.0.4_1.1.1-WindowsHosting.exe  https:/ ...

  3. Java并发编程阅读笔记-锁和活跃性问题

  4. 电脑小白和ta的小白电脑——MySQL数据库

    数据库我选择了MySQL,因为据说MySQL是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS之一了,而且,免费呀! MySQL数据库开发环境的配置 (一)下载MySQL ...

  5. bean shell 中parameter传递参数的方法

    1.在csv set data config中添加用到的数据文件,并进行配置 2.在这一栏中,可以引入数据文件中的数据,用法如下${变量名},多个变量用空格隔开.在脚本中进行引用时,采用bsh.arg ...

  6. java的main函数组成

    package test;/*public static void main(String[] args)主函数特殊之处:1.格式是固定的2.被jvm(虚拟机)所识别和调用 public:因为权限必须 ...

  7. 在Eclipse中Tomcat配置图片保存路径

    在上一篇二维码功能实现的时候发现,若将二维码保存在项目路径下,服务器起了之后存入的二维码图片是无法实时读取的,所以在Tomcat上配置图片保存位置,将图片保存到项目外的地方. 查找资料的时候看见一个方 ...

  8. Python中集合set()的使用及处理

    在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...

  9. 自己动手写CPU——寄存器堆、数据存储器(基于FPGA与Verilog)

    上一篇写的是基本的设计方案,由于考研复习很忙,不知道下一次什么时候才能打开博客,今天就再写一篇.写一写CPU中涉及到RAM的部件,如寄存器堆.数据存储器等. 大家应该在大一刚接触到计算机的时候就知道R ...

  10. Tkinter模块:Grid几何管理器

    Tkinter模块是Python的标准库模块之一,也是使用Python语言进行图形化用户界面(GUI)开发的基础. 本文介绍一下Tkinter模块的Grid几何管理器. 使用VB.MFC进行GUI开发 ...