1.常见的13中查询方式(必须记住)

<1> all():                 查询所有结果

<2> filter(**kwargs):      它包含了与所给筛选条件相匹配的对象

<3> get(**kwargs):         返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。

<4> exclude(**kwargs):     它包含了与所给筛选条件不匹配的对象

<5> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列

<6> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列

<7> order_by(*field):      对查询结果排序

<8> reverse():             对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。

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

<10> count():              返回数据库中匹配查询(QuerySet)的对象数量。

<11> first():              返回第一条记录

<12> last():               返回最后一条记录

<13> exists():             如果QuerySet包含数据,就返回True,否则返回False

2.查询案例:

首先解决如何在一个Python文件中,运行Django项目,这段代码记住就可以,第一行的setdefault可以在manage.py中找到。

"""
如何在一个Python脚本或文件中,加载Django项目的配置和变量信息
""" import os if __name__ == '__main__':
# 加载Django项目的配置信息
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day69.settings") # 可以在manage.py中找到。
# 导入Django,并启动Django项目
import django
django.setup() from app01 import models
class Person(models.Model):
name = models.CharField(max_length=32) # char(64)
age = models.IntegerField(default=18)
birthday = models.DateField(auto_now_add=True) def __str__(self):
return self.name

    # all()
ret = models.Person.objects.all()
print(ret)

    # get()
ret = models.Person.objects.get(name='小黑')
print(ret)

    # filter()
ret = models.Person.objects.filter(id=1)
print(ret)
ret = models.Person.objects.filter(id=100)
   print(ret)

    ret = models.Person.objects.filter(id=1)
print(ret)
ret = models.Person.objects.filter(id=100)
print(ret)
# 就算查询结果只有一个,返回的也是QuerySet,我们要用索引的方式取出第一个元素
ret = models.Person.objects.filter(id=1)[0]
print(ret)

    # exclude
# 除了id=1的所有数据
ret = models.Person.objects.exclude(id=1)
print(ret)

   # values 返回一个QuerySet对象,里面都是字典,不写字段名,默认查询所有字段
ret = models.Person.objects.values("name","birthday")
print(ret)

   # values_list 返回一个QuerySet对象,里面都是元祖。
ret = models.Person.objects.values_list("name","birthday")
print(ret)

class Person(models.Model):
name = models.CharField(max_length=32) # char(64)
age = models.IntegerField(default=18)
birthday = models.DateField(auto_now_add=True) def __str__(self):
return self.name class Meta:
ordering=("birthday",)
    # 按照指定字段排序,在类中写Meta,如果不指定,默认用id排序
ret = models.Person.objects.all().order_by("birthday")
print(ret)

    # reverse 将一个有序的QuerySet 反转顺序
# 对有序的QuerySet才能调用reverse
ret = models.Person.objects.all().order_by("birthday")
print(ret)
ret = models.Person.objects.all().order_by("birthday").reverse()
print(ret)

    # count 返回QuerySet中对象的位置
ret = models.Person.objects.all().count()
print(ret)

    # first 返回QuerySet中第一个对象的位置
ret = models.Person.objects.all().first()
print(ret)
# last 返回QuerySet中最后一个对象的位置
ret = models.Person.objects.all().last()
print(ret)

    # exists 判断表里有没有数据
ret = models.Person.objects.exists()
print(ret)

Django之13种必会查询的更多相关文章

  1. django基础之day04,必知必会13条,双下划线查询,字段增删改查,对象的跨表查询,双下划线的跨表查询

    from django.test import TestCase # Create your tests here. import os import sys if __name__ == " ...

  2. ORM( ORM查询13种方法3. 单表的双下划线的使用 4. 外键的方法 5. 多对多的方法 ,聚合,分组,F查询,Q查询,事务 )

    必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或 ...

  3. Python--day69--ORM查询的13种方法

    ORM查询的13种方法: 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> ...

  4. django第13天(auth组件,forms组件,中间件,csrf)

    django第13天(auth组件,forms组件) auth组件 -auth组件 -auth是什么? -django内置的用户认证系统,可以快速的实现,登录,注销,修改密码.... -怎么用? -( ...

  5. 13条必知必会&&测试

    1.13条必知必会 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> get(**kwargs) ...

  6. django中外键关联表的查询随笔

    django中,如果一个数据库中的表之间有外键的话可以方便的通过一个表查询到其相关表的数据.如有下面三个model:class Blog(models.Model):    name = models ...

  7. DG备库,实时应用如何判断,MR进程,及MRP应用归档,三种情况的查询及验证

    本篇文档学习,DG备库,实时应用如何判断,MR进程,及MRP应用归档,三种情况的查询及验证 1.取消MRP进程 备库查询进程状态select process,client_process,sequen ...

  8. Django的orm练习---多表查询

    Django的orm练习---多表查询 表关系如下 表结构 : from django.db import models # Create your models here. # 多对多-----&g ...

  9. Django的orm操作之表查询二

    复习 单表查询 # 单表操作 # 增 # 方式1 user_obj=models.User.objects.create(**kwargs) # 之一create # 方式2 user_obj=mod ...

随机推荐

  1. JavaScript中的函数柯里化与反柯里化

    一.柯里化定义 在计算机科学中,柯里化是把 接受多个参数的函数 变换成 接受一个单一参数(最初函数的第一个参数)的函数 并且返回 接受余下参数且返回结果的新函数的技术 高阶函数 高阶函数是实现柯里化的 ...

  2. 反演+分块套分块——bzoj2154

    题解都在论文里了 #include<bits/stdc++.h> using namespace std; #define maxn 10000005 #define ll long lo ...

  3. NPAPI插件开发新手容易遇到的问题

    在网上找了一个npdemo的例子,编译了一下在FireFox运行正常,在Chrome下就是不行,也没任何提示. 折腾了好久,最后发现是rc文件 支持语言编码问题 NPAPI插件开发详细记录:用VS20 ...

  4. jdk自带的数据库derby的基本使用以及注意事项(mac为例),附java demo

    文章目录 安装 环境变量 验证是否安装成功 启动 本地启动 允许远程连接的启动方式: 在启动过程中可能遇到的错误(远程连接的时候会出现): 1 2 连接测试,创建数据库 方法一(推荐) 方法二 jav ...

  5. __attribute__ (( __cleanup__))

    一.简单说明: cleanup作为__attribute__属性中的一个可选属性值 其作用是当其声明的变量离开了其生命周期,那么 会自动调用你所指定的销毁函数 二.例子: #include <s ...

  6. Day 12 :迭代器与生成器

    可迭代:在Python中如果一个对象有__iter__( )方法,则称这个对象是可迭代的(Iterable): 其中__iter__( )方法的作用是让对象可以用for ... in循环遍历,列表Li ...

  7. 转载:jQuery 获取屏幕高度、宽度

    做手机Web开发做浏览器兼容用到了,所以在网上找了些汇总下. alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(document).height() ...

  8. 如果一个文件块有130M,请问有多少个mapper

    如果一个文件块有130M,请问有多少个mapper 130M的文件将被分成2个mapper. 原因:根据FileInputFormat类 有一个成员变量 private static final do ...

  9. libgdx 启动者(个人翻译,还请不吝赐教)类和配置

    本文章翻译自libGDX官方wiki,.转载请注明出处:http://blog.csdn.net/kent_todo/article/details/37942047 libGDX官方网址:http: ...

  10. 2018Github用户kamranahmedse分享的开发路线

    下面四张图是Github用户kamranahmedse分享的,主要是web前端开发.后端开发以及DevOps开发的路线图,涉及的点还是很全面的,如果你对这部分有兴趣,并且希望有所作为,以下这几张路线图 ...