Django(8)ORM单表实例(二)

简介: Django(8)ORM单表实例(二)

- exclude()


  • exclude()方法用于查询不符合条件的数据,同样返回QuerySet数据类型,实例:


# -*- coding: utf-8 -*-
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.exclude(publish="金庸出版社")
    for i in books:
        print(i.title)
    #print(books,type(books))
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


e476adb20b91472fabb23c26823ac638.png


- get()


  • get()方法用于查询符合条件的返回模型类的对象,符合条件的对象只能有一个,如果符合筛选条件的对象超过一个或者没有,都会抛出错误,实例:
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    #三个查询代码依次执行
    books = models.Book.objects.get(pk=2)
    #books = models.Book.objects.get(pk=5)
    #books = models.Book.objects.get(price=200)
    print(books,type(books))
    return HttpResponse('<p>查找成功!</p>')


  • 访问测试


64e5542f114341df96eb1b489e50e676.png

e86940dd643946d798e3db569cdd6ccc.png

# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    #books = models.Book.objects.get(pk=2)
    books = models.Book.objects.get(pk=5)
    #books = models.Book.objects.get(price=200)
    print(books,type(books))
    return HttpResponse('<p>查找成功!</p>')

访问测试,发现报错,这是因为主键id没有等于5的


dbc3d759e877479484ddf63be4efd804.png

f1919d7469334561a4007aa498526dcb.png

# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    #books = models.Book.objects.get(pk=2)
    #books = models.Book.objects.get(pk=5)
    books = models.Book.objects.get(price=200)
    print(books,type(books))
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试,因为price字段等于200的有两条数据,返回了两个,所以报错了


dbc869f629df45eb8bc51a09d7224738.png

2bec037d67a647699ee9c7ce277d1fc5.png

- order_by()


  • order_by()方法用于对查询结果进行排序,返回QuerySet类型数据
  • 注意:


  1. 参数的字段名要加引号
  2. 降序是在字段前面加一个杠-


  • 实例:


# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.order_by("price")
    #books = models.Book.objects.order_by("-price")
    print(books)
    for i in books:
        print(i.price)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试

ebc204a555c3465ea4493d950ec0c107.png

2f0d29724960480d805e6d10fe76893d.png


# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    #books = models.Book.objects.order_by("price")
    books = models.Book.objects.order_by("-price")
    print(books)
    for i in books:
        print(i.price)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


66a43c4209ac4a1c95ebea62e3fafd14.png

d1d1b3ec5aa24297a20f5a493aafdbdb.png


- reverse()


  • reverse()方法用于对查询结果进行反转,返回QuerySet数据类型,实例:
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    #books = models.Book.objects.order_by("price")
    books = models.Book.objects.order_by("-price").reverse()
    print(books)
    for i in books:
        print(i.price)
    return HttpResponse('<p>查找成功!</p>')

访问测试


2ea8c6cf92bd436c8dd30e57afada84f.png

9589db7bc8f94b90b05cbf05cf4366c2.png

# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.order_by("price").reverse()
    #books = models.Book.objects.order_by("-price").reverse()
    print(books)
    for i in books:
        print(i.price)
    return HttpResponse('<p>查找成功!</p>')

访问测试

826a10746dc8405b92889df20fd32bb6.pngf03c7e1a3801460b92928764b7e149de.png


- count()


  • count()方法用于查询数据的数量,返回的是整数,实例:
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.count()
    #books = models.Book.objects.filter(price=200).count()
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


8ec3ce497d804fbdbf4781d5ba962357.png

21b9860b12db455eafe63cde3377997f.png


  • 也可以统计条件查询的数据量
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    #books = models.Book.objects.count()
    books = models.Book.objects.filter(price=200).count()
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


7a1a92cc1502486ea0257da594925095.png

82e1ac865bfd469fae31e212cbc803a1.png


- first()


  • first()方法返回第一条数据,返回的数据是模型类的对象,可以使用索引下标[0],实例:
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.first()
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


461c939ead4c446c950f87c5b4879f55.png

6c4f5492b3414235b0f777bec5ea7388.png


  • 同样可以应用在条件查询上
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.filter(price=300).first()
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试

ab7ee50f12404d409578dedc07eccd0d.png

8f2aede5e03d443dadb1edf35eb71b58.png


- last()


  • last()方法和first()相反,返回最后一条数据
  • 注意:


不能使用下标索引[-1],因为ORM没有逆向索引

  • 实例:


# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.filter(price=200).last()
    print(books)
    books = models.Book.objects.last()
    print(books)
    return HttpResponse('<p>查找成功!</p>')

访问测试

1cea3b78ddfc4e33a2917869f67f81d2.png

26ccca35a6274beea8e78b77f22d7b2a.png


- exists()


  • exists()方法用于判断查询结果中是否有数据,返回的布尔值,有数据为True,没有则是False
    注意:判断的数据类型只能是QuerySet数据类型,不能是整型或者模型类对象
  • 实例:
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.exists()
    #books = models.Book.objects.count().exists()
    #books = models.Book.objects.first().exists()
    print(books)
    return HttpResponse('<p>查找成功!</p>')

访问测试,存在数据,并且数据类型为QuerySet


19ae0da98860418c837080221e6c12e0.png

011fd8e65bb84f1f98e0bc1ec89a624e.png

# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    #books = models.Book.objects.exists()
    books = models.Book.objects.count().exists()
    #books = models.Book.objects.first().exists()
    print(books)
    return HttpResponse('<p>查找成功!</p>')


访问测试,返回数据类型不能是int


d881471d2f204c5f8771f5b26e105e5e.png

# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    #books = models.Book.objects.exists()
    #books = models.Book.objects.count().exists()
    books = models.Book.objects.first().exists()
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试,返回数据类型不能是模型类对象



819f02a49aef4fbbac66dbb13b7ab439.png

- values()


  • values()方法用于查询部分字段的数据,返回一个QuerySet数据类型,每条数据都是一个字典


  • 注意:


  1. 参数的字段名称要加引号
  2. 想要字段名称和数据使用values
  • 实例:
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.values("pk","price","title") #只查询指定字段,返回的QuerySet中每条数据都是一个字典
    print(books[0]["price"],type(books))
    for i in books:
        print(i)
    return HttpResponse('<p>查找成功!</p>')

访问测试


62a619822114403684914a426c03a1b7.png

ad85c20a92954da1a0de284b1de55c2a.png


- values_list()


  • values_list()方法用于查询部分字段的数据,返回一个QuerySet数据类型,每条数据都是一个元组,实例:


  • 注意:


  1. 参数的字段名称要加引号
  2. 想要字段名称和数据使用values_list
# -*- coding: utf-8 -*-
from statistics import mode
from django.shortcuts import render,HttpResponse
from app1_model import models
def add_book(request):
    #books = models.Book.objects.create(title="九阴神功",price=200,publish="功夫出版社",pub_date="1777-10-10")  
    books = models.Book.objects.values_list("pk","price","title")
    print(books[1][2],type(books))
    for i in books:
        print(i)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


4e5aea7181b749c4b267fd0f49321b57.png

f6166c7dffbf4a499b00b8150bcfff76.png

目录
相关文章
|
7月前
|
存储 关系型数据库 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移1
Django创建应用、ORM的进阶使用及模型类数据库迁移1
74 0
|
6月前
|
SQL 关系型数据库 MySQL
Django入门ORM(Django操作MySQL) 专题一
Django入门ORM(Django操作MySQL) 专题一
|
7月前
|
存储 数据可视化 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移3
Django创建应用、ORM的进阶使用及模型类数据库迁移3
52 0
|
7月前
|
关系型数据库 MySQL 数据库
Django创建应用、ORM的进阶使用及模型类数据库迁移2
Django创建应用、ORM的进阶使用及模型类数据库迁移2
47 0
|
4月前
|
SQL 数据库 开发者
Python Web 开发: 什么是 Django ORM?如何使用它进行数据库操作?
Python Web 开发: 什么是 Django ORM?如何使用它进行数据库操作?
|
1月前
|
SQL API 数据库
一篇文章带你了解Django ORM操作
一篇文章带你了解Django ORM操作
20 0
|
1月前
|
数据采集 存储 数据处理
Python爬虫在Django项目中的数据处理与展示实例
Python爬虫在Django项目中的数据处理与展示实例
|
5月前
|
SQL 关系型数据库 MySQL
07 Django模型 - ORM简介及MySQL数据库的使用
07 Django模型 - ORM简介及MySQL数据库的使用
36 0
|
4月前
|
算法 Docker Python
Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
59 0
|
4月前
|
算法 Java Python
Python【算法中心 01】Web框架Django入门(安装+项目创建+应用创建+服务启动)Python搭建算法中心后台实例分享
Python【算法中心 01】Web框架Django入门(安装+项目创建+应用创建+服务启动)Python搭建算法中心后台实例分享
47 0