IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django学习——topic3 -> 正文阅读

[Python知识库]Django学习——topic3

制作一个“删除书籍”的页面

  • 点击‘查看所有书籍’页面中的‘删除’;删除当前书籍(伪删除)
  • 视图函数 delete_book
  • 路由http://127.0.0.1:8000/bookstore/delete?book_id=xx
    注意:相关查询获取数据的地方,要过滤出活跃数据
    一个F对象代表数据库中某条记录的字段的信息
    作用:
    -通常是对数据库中的某条记录的字段的信息
    -用于类属性(字段)之间的比较
    语法:
    from django.db.models import F
    F('列名’)

更新Book实例中所有的零售价涨10元

Book.objects.all().update(market_price=F('market_price')+10)
#更新的方法
'UPDATE 'bookstore_book' SET 'market_price' =('bookstore_book'.market_price'+10)
#以上做法好于如下代码
books = Book.objects.all()
for book in books:
	book.market_prince = book.marget_price+10
	book.save()

F对象

EG:今天天气真好----点赞
def add_like(request,topic_id):
#取出文章
topic = Topic.objects.get(id = topic_id)
#更新
new_like = topic.like+1
topic.like = new_like
topic.save()
old -> update topic set like =1 where id =xxx
F ->update topic set like = like+1 where id = xxx

对数据库中的连个字段的值进行比较,列出哪些书籍的零售价高于定价

#导包
from django.db.models import F
from bookstore,models import Book
books = Book.objects.filter(market_price__gt = F('price'))
'SELECT * FROM 'bookstore_book' WHERE
'bookstore_book'.market_price'
('bookstore_book','price')
for book in books:
	print(book.title,'定价':,book.price,'现价:',book,market_price)

Q对象

  • 当在获取查询结果集使用复杂的逻辑或|、逻辑非~等操作时可以借助与Q对象进行操作

如:想找出定价低于20元 或者清华大学出版社的全部书。可以写成Book.objects.filter(Q(price__It=20)|Q(pub=“清华大学出版社”))
Q对象在数据包 django.db.models 中。需要先导入在使用

  • 、作用:在条件中用来实现除and(&)以外的or(|)或not(~)操作运算符:& 与操作;| 或操作;
    ~ 非操作

语法:
from django.db.models import Q
Q(条件1)|Q(条件2) 或
Q(条件1)&Q(条件2)和
Q(条件1)&~Q(条件2)条件1成立且条件2不成立
实例:
from django.db.models import Q
#查询清华大学出版社的书或价格低于50的书
Book.objects.filter(Q(market_price__It=50)|Q(pub_house=‘清华大学出版社’))

查询不是机械工业出版社的书且价格低于50的书

Book.objects.filter(Q(market_price__It=50) & ~Q(pub_house='机械工业出版社'))

聚合查询——分组聚合
分组聚合是通过计算查询结果找那个每个对象所关联的对象集合,从而得到总计值(也可以是平均值或总和),即为查询集的每一项生成聚合
语法:
-QuerySet.annotate(结果变量名=聚合函数(‘列’))
返回值:
-QuerySet

1.通过先用查询结果MyModel.objects.values查询要分组聚合的列
MyModel.objects.values(‘列1’,‘列2’)
如:

pub_set = Book.objects.values('pub')
print(pub_set) #<querySet [{'pub':'清华大学出版社'},{'pub'

2.通过返回结果的QuerySet.annotate方法分组聚合得到分组结果
QuerySet.annotate(名=聚合函数(‘列’))

pub_count_set =
pub_set.annotate(myCount = Count('pub'))
print(pub_count_set)

原生数据库操作

Django也可以支持直接用sql语句的方式通信数据库
查询:使用MyModel.objects.raw()进行 数据库查询操作查询
语法:MyModel.objects.raw(sql语句,拼接参数)
返回值:RawQuerySet集合对象

books = models.Book.objects.raw('select * from bookstore_book ')
for book in books:
	print(book)

攻击结果:可查询出所有用户数据

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 11:55:12  更:2022-05-19 11:55:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 16:01:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码