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. List之取不同元素

    1.工具-->NuGet包管理器-->管理解决方案的NuGet包程序包 2.添加System.Linq包 3.引用 using System.linq List<int> li ...

  2. ImportError: No module named cx_Oracle

    1.ImportError: No module named cx_Oracle

  3. 关于使用vue-router的嵌套路由的命名路由时踩的坑

    今天在做我的模仿微博项目时,我想实现点击router-link后,跳转到微博正文页面,并渲染其嵌套视图-评论组件.但是在实际实现时,我发现页面可以正常跳转,但是在页面加载后,并不渲染该页面的嵌套视图, ...

  4. Delphi 日期函数列表

    引用单元 :DateUtils CompareDate 比较两个日期时间值日期部分的大小CompareDateTime 比较两个日期时间值的大小CompareTime 比较两个日期时间值时间部分的大小 ...

  5. delphi 安卓开发常用

    delphi 安卓开发有几个常用的pas: FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewTex ...

  6. NX二次开发-创建一个3 x 3矩阵UF_CSYS_create_matrix

    1 NX9+VS2012 #include <uf.h> #include <uf_csys.h> #include <uf_mtx.h> UF_initializ ...

  7. 1.1两个char类型数据相加后,转化为int类型

    #include<stdio.h> main() { char a = 127; char i=0; char ai=0; ai= a+i; printf("size short ...

  8. 2019 牛客多校第三场 B Crazy Binary String

    题目链接:https://ac.nowcoder.com/acm/contest/883/B 题目大意   给定一个长度为 N 的 01 字符串,输出最长子串和子序列的长度,满足其中 0 和 1 的个 ...

  9. PAT_A1043#Is It a Binary Search Tree

    Source: PAT A1043 Is It a Binary Search Tree (25 分) Description: A Binary Search Tree (BST) is recur ...

  10. 基于NEO4J的高级检索功能

    基于NEO4J的高级检索 一.需求 二.创建索引 1.索引自动更新配置 2.执行带有索引自动更新配置的过程 三.查询索引 1.LUCENE查询语法 2.实现高级检索的核心:LUCENE QUERY语句 ...