首页 > 其他分享 >django框架(07)

django框架(07)

时间:2023-01-02 15:00:58浏览次数:39  
标签:__ Book 07 框架 models res price django objects

图书管理系统讲解

1.表设计
	先考虑普通字段再考虑外键字段
    数据库迁移、测试数据录入
2.首页展示
3.书籍展示
4.书籍添加
5.书籍编辑
	后端如何获取用户想要编辑的数据、前端如何展示出待编辑的数据
6.书籍删除

聚合查询

聚合函数:Max Min Sum Count Avg
在ORM中支持单独使用聚合函数  aggregate 

from django.db.models import Max, Min, Sum, Count, Avg
res = models.Book.objects.aggregate(Max('price'), Count('pk'), 最小价格=Min('price'), allPrice=Sum('price'),平均价格=Avg('price'))
print(res)

分组查询

"""
如果执行orm分组查询报错 并且有关键字sql_mode strict mode
	移除sql_mode中的only_full_group_by
"""
# 分组查询
    # 统计每一本书的作者个数
    # res = models.Book.objects.annotate(author_num=Count('authors__pk')).values('title', 'author_num')
    # print(res)
    # 统计出每个出版社卖的最便宜的书的价格
    # res = models.Publish.objects.annotate(min_price=Min('book__price')).values('name', 'min_price')
    # print(res)
    # 统计不止一个作者的图书
    # 1.先统计每本书的作者个数
    # res = models.Book.objects.annotate(author_num=Count('authors__pk'))
    # 2.筛选出作者个数大于1的数据
    # res = models.Book.objects.annotate(author_num=Count('authors__pk')).filter(author_num__gt=1).values('title',
    #                                                                                                     'author_num')
    # print(res)
    # 查询每个作者出的书的总价格
    # res = models.Author.objects.annotate(总价=Sum('book__price'),count_book=Count('book__pk')).values('name','总价','count_book')
    # print(res)
    """
    models.表名.objects.annotate()                            按照表分组
    models.表名.objects.values('字段名').annotate()            按照values括号内指定的字段分组
    """
    res = models.Book.objects.values('publish_id').annotate(count_pk=Count('pk')).values('publish_id', 'count_pk')
    print(res)

f与Q查询

# 1.查询库存数大于卖出数的书籍
'''当查询条件不是明确的 也需要从数据库中获取 就需要使用F查询'''
from django.db.models import F
# res = models.Book.objects.filter(kucun__gt=F('maichu'))
# print(res)
# 2.将所有书的价格涨800
# models.Book.objects.update(price=F('price') + 800)
# 3.将所有书的名称后面追加爆款
from django.db.models.functions import Concat
from django.db.models import Value
models.Book.objects.update(title=Concat(F('title'), Value('新款')))



# 查询主键是1或者价格大于2000的书籍
# res = models.Book.objects.filter(pk=1, price__gt=2000)  # 逗号默认是and关系
from django.db.models import Q
# res = models.Book.objects.filter(Q(pk=1), Q(price__gt=2000))  # 逗号是and
# res = models.Book.objects.filter(Q(pk=1) | Q(price__gt=2000))  # |是or
res = models.Book.objects.filter(~Q(pk=1) | Q(price__gt=2000))  # ~是not
print(res.query)

标签:__,Book,07,框架,models,res,price,django,objects
From: https://www.cnblogs.com/wei0919/p/17019912.html

相关文章

  • leetcode-607. 销售员
    607.销售员-力扣(Leetcode)这个有点像是写离线查询了#WriteyourMySQLquerystatementbelowselectsp.namefrom(selectsales_id,namefromSalesPe......
  • Django框架7
    今日内容概要聚合查询分组查询F与Q查询今日内容详细聚合查询'''MySQL中常用的聚合函数 Max Min Sum CountAvg 需要结合分组一起使用'''在ORM中支持单独使用......
  • django11
    django中间件三个了解的方法1.process_view 路由匹配成功之后执行视图函数/类之前自动触发(顺序同process_request)2.process_exception 视图函数/类执行报错自动触发(......
  • Django框架7
    今日内容概要Q查询进阶操作ORM查询优化ORM事务操作ORM常用字段类型ORM常用字段参数Ajax请求(待定)今日内容详细Q查询进阶操作fromdjango.db.modelsimportQq......
  • Django框架10
    今日内容概要django中间件三个了解的方法基于django中间件实现功能的插拔式设计cookie与session简介django操作cookiedjango操作session今日内容详细django中间件......
  • Django框架9
    今日内容概要forms组件渲染标签forms组件展示信息forms组件校验补充forms组件参数补充forms组件源码剖析modelform组件django中间件今日内容详细forms组件渲染......
  • django12
    csrf跨站请求伪造钓鱼网站:模仿一个正规的网站让用户在该网站上做操作但是操作的结果会影响到用户正常的网站账户但是其中有一些猫腻 eg:英语四六级考试需要网上先缴......
  • Django框架11
    今日内容概要csrf跨站请求伪造csrf相关校验策略CBV添加装饰器的多种方式auth认证模块今日内容详细csrf跨站请求伪造钓鱼网站:模仿一个正规的网站让用户在该网站......
  • Django基础
    Django基础一、Django简介以及基本使用二、Django与数据库连接三、Django路由层四、Django视图层五、Django模板层六、Django模型层七、Django组件之Ajax请求八、......
  • 大数据趣味学习探讨(一):学习框架的重要性
    文章目录​​学习框架的重要性​​​​一、痛点​​​​二、规则vs元规则​​​​三、无穷无尽的新问题​​​​四、感悟​​学习框架的重要性框架类似底层方法论,有人说学习......