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

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

- distinct()


  • distinct()方法用于对数据的去重,返回QuerySet数据类型
  • 注意:


  1. 对模型类的对象去重没有意义,因为每个对象都是一个不一样的存在
  2. distinct()一般都是联合values或者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("publish").distinct()
    #books = models.Book.objects.distinct()
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


9c01cb8798634daeacdc92070d74b2e8.png


a23f0e158d7641b898a845e124544b4b.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.values_list("publish").distinct()
    books = models.Book.objects.distinct()
    print(books)
    return HttpResponse('<p>查找成功!</p>')

访问测试


950832b4f29a432f9dd17382c059beee.png


32b42c6ccb5b4c0297de254721bb10e7.png


(3)exclude()和filter()的条件查询


  • filter()方法基于双下划线的模糊查询,exclude也是同理
  • 注意:


filter中运算符只能使用等于号:=,不能使用大于、小于号以及其他符号


__in


  • __in用于读取区间,而=后面为列表


# -*- 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__in=[200,300])
    print(books)
    return HttpResponse('<p>查找成功!</p>')

访问测试


91184a4a29a84fa0886a5e792713555a.png

4c328c252b234956b034609a7570d937.png

__gt


  • __gt大于,=号后面为数字
# -*- 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__gt=250)
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试

a631fe4b5c044a5d9efba33fb6f5e7ba.png


2a34c16e48f4452db599b0399eea035f.png

__gte


  • __gte大于等于,=号后面为数字


# -*- 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__gte=300)
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试



7f4dff15afac4c858070c5f619589e38.png

48b449cd2678480b8889d5683214226f.png


__lt


  • __lt小于,=号后面为数字


# -*- 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__lt=300)
    print(books)
    return HttpResponse('<p>查找成功!</p>')


  • 访问测试

61c7826b6f8d40cab9b2a8ea124fe660.png

f9633a9f8aac43cf8dd62b5594726f3c.png


__lte


  • __lte小于等于,=号后面为数字
# -*- 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__lte=300)
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


ee7c46126c5c4f43a845aff13991c481.png

469bf9fb009e41e5bbcfb80be434cecc.png


__range


  • __range在…之间,=号后面为两个元素的列表
# -*- 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__range=[250,350])
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试

d7680a79da1a401a9018e44ef374f71e.png


641aa7c4faee4a4cb3afce4914fed87e.png


__contains


  • __contains包含,=号后面为字符串


# -*- 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__contains="金庸")
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试


39c8b44271394e16a4c8d7dd66327d9e.png

6ec81cfd55db4e8e984ba9f958cc8cf4.png


__icontains


  • __icontains包含==(不区分大小写)==,=号后面为字符串
  • 提前增加数据


64c583bfb90e4fd1b5f844353abbbd48.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="Python",price=500,publish="Python出版社",pub_date="1970-12-10")  
    books = models.Book.objects.filter(title__icontains="python")
    print(books)
    return HttpResponse('<p>查找成功!</p>')
  • 访问测试

d23b99a8ab09481186ff8c4c906c8eb8.png


f73be50009a34b188fe362ea070450f6.png


__startswith


  • __startswith以指定字符开头,=号后面为字符串


# -*- 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="Python",price=500,publish="Python出版社",pub_date="1970-12-10")  
    books = models.Book.objects.filter(title__startswith="P")
    print(books)
    return HttpResponse('<p>查找成功!</p>')


访问测试03c161da8631437f94bafcaa8ef25c3a.png

5e9bde44fb254c57a82357362b75d5bb.png


__endswith


  • __endswith以指定字符结尾,=号后面为字符串
# -*- 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="Python",price=500,publish="Python出版社",pub_date="1970-12-10")  
    books = models.Book.objects.filter(title__endswith="on")
    print(books)
    return HttpResponse('<p>查找成功!</p>')

访问测试


d0c763285f2341f1815dca468f13fe77.png

5d30a0617ac64f8d9c166a19e7dcdd88.png

目录
相关文章
|
20天前
|
SQL 定位技术 数据库
深入探索Django ORM:高效数据库操作的秘诀####
本文旨在为读者揭开Django ORM(对象关系映射)的神秘面纱,通过一系列生动的比喻和详实的案例,深入浅出地讲解其核心概念、工作原理及高级特性。我们将一起探讨如何利用Django ORM简化数据库交互,提升开发效率,同时确保数据的一致性和安全性。不同于传统的技术文档,本文将以故事化的形式,带领读者在轻松愉快的氛围中掌握Django ORM的精髓。 ####
|
1月前
|
SQL 监控 数据库
深入探索Django ORM:高效数据操作的秘诀与实践####
在当今的Web开发领域,提升数据访问层的效率是优化应用性能的关键。本文旨在通过剖析Django框架中的ORM(对象关系映射)机制,揭示其如何简化数据库交互,并探讨一系列高级技巧与策略,帮助开发者构建更高效、可维护的数据访问代码。我们不涉及安装步骤或基础概念,而是聚焦于实战经验分享,旨在为中高级开发者提供深度洞见。 ####
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
87 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
SQL Go 数据库
【速存】深入理解Django ORM:编写高效的数据库查询
【速存】深入理解Django ORM:编写高效的数据库查询
77 0
|
4月前
|
数据库 Python
Django ORM
【8月更文挑战第23天】
53 4
|
4月前
|
数据管理 数据挖掘 调度
Django后端架构开发:URLconf到ORM深度剖析
Django后端架构开发:URLconf到ORM深度剖析
61 1
|
4月前
|
API 数据库 开发者
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
47 0
|
4月前
|
SQL Go 数据库
Django入门到放弃之ORM多表操作
Django入门到放弃之ORM多表操作
|
4月前
|
SQL 关系型数据库 MySQL
Django入门到放弃之ORM单表操作
Django入门到放弃之ORM单表操作
|
5月前
|
SQL 数据库 Python
Django框架数据库ORM查询操作(6)
【7月更文挑战第6天】```markdown Django ORM常用数据库操作:1) 查询所有数据2) 根据ID查询 3) 精确查询 4) 分页排序
87 1