Django中ORM练习题的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Django中ORM练习题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.modles中表结构#出版社c
千家信息网最后更新 2026年11月03日Django中ORM练习题的示例分析
这篇文章主要介绍了Django中ORM练习题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
1.modles中表结构
#出版社class Publisher(models.Model): name = models.CharField(max_length=32) city = models.CharField(max_length=32) def __str__(self): return "".format(self.id, self.name)#书籍class Book(models.Model): title = models.CharField(max_length=32) publish_date = models.DateField(auto_now_add=True) price = models.DecimalField(max_digits=5,decimal_places=2) memo = models.TextField(null=True) #创建外键,关联Publisher Publisher = models.ForeignKey(to='Publisher') def __str__(self): return " ".format(self.id, self.title#作者class Author(models.Model): name = models.CharField(max_length =32) age = models.IntegerField() phone = models.CharField(max_length=11) #创建多对多关联 books = models.ManyToManyField(to='Book') def __str__(self): return " ".format(self.id, self.name)
2.题目
"""查找所有书名里包含金老板的书查找出版日期是2018年的书查找出版日期是2017年的书名查找价格大于10元的书查找价格大于10元的书名和价格查找memo字段是空的书查找在北京的出版社查找名字以沙河开头的出版社查找"沙河出版社"出版的所有书籍查找每个出版社出版价格最高的书籍价格查找每个出版社的名字以及出的书籍数量查找作者名字里面带"小"字的作者查找年龄大于30岁的作者查找手机号是155开头的作者查找手机号是155开头的作者的姓名和年龄查找每个作者写的价格最高的书籍价格查找每个作者的姓名以及出的书籍数量查找书名是"跟金老板学开车"的书的出版社查找书名是"跟金老板学开车"的书的出版社所在的城市查找书名是"跟金老板学开车"的书的出版社的名称查找书名是"跟金老板学开车"的书的出版社出版的其他书籍的名字和价格查找书名是"跟金老板学开车"的书的所有作者查找书名是"跟金老板学开车"的书的作者的年龄查找书名是"跟金老板学开车"的书的作者的手机号码查找书名是"跟金老板学开车"的书的作者们的姓名以及出版的所有书籍名称和价钱"""题目
3.测试数据
-- ------------------------------ Records of app01_author-- ----------------------------INSERT INTO `app01_author` VALUES ('1', '金老板', '18', '15512351234');INSERT INTO `app01_author` VALUES ('2', '小哪吒', '20', '15312341234');INSERT INTO `app01_author` VALUES ('3', 'Alex', '73', '15512341234'); -- ------------------------------ Records of app01_publisher-- ----------------------------INSERT INTO `app01_publisher` VALUES ('1', '沙河出版社', '北京');INSERT INTO `app01_publisher` VALUES ('2', '西二旗出版社', '北京');INSERT INTO `app01_publisher` VALUES ('3', '张江出版社', '上海');INSERT INTO `app01_publisher` VALUES ('4', '沙河出版社', '上海'); -- ------------------------------ Records of app01_book-- ----------------------------INSERT INTO `app01_book` VALUES ('1', '跟金老板学开车', '2018-08-03', '12.90', null, '1');INSERT INTO `app01_book` VALUES ('2', '跟金老板学开潜艇', '2017-08-10', '9.99', null, '1');INSERT INTO `app01_book` VALUES ('3', '跟老男孩学思想', '2018-09-03', '39.99', null, '2');INSERT INTO `app01_book` VALUES ('4', '跟egon学喊麦', '2018-06-12', '0.99', null, '4'); -- ------------------------------ Records of app01_book_author-- ----------------------------INSERT INTO `app01_book_author` VALUES ('3', '1', '1');INSERT INTO `app01_book_author` VALUES ('4', '2', '1');INSERT INTO `app01_book_author` VALUES ('5', '1', '2');INSERT INTO `app01_book_author` VALUES ('2', '2', '2');INSERT INTO `app01_book_author` VALUES ('6', '3', '3');INSERT INTO `app01_book_author` VALUES ('7', '3', '4');测试数据4.答案
import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "ORMHomework.settings")import djangodjango.setup()from app01 import modelsfrom django.db.models import Max, Min, Sum, Avg, Count# 查找所有书名里包含金老板的书ret1= models.Book.objects.filter(title__contains='金老板')# print (ret1)#查找出版日期是2018年的书ret2 = models.Book.objects.filter(publish_date__year=2018)# print (ret2)#查找出版日期是2017年的书名ret3 = models.Book.objects.filter(publish_date__year=2017).values('title')# print (ret3)#查找价格大于10元的书ret4 =models.Book.objects.filter(price__gt=10)# print(ret4)#查找价格大于10元的书名和价格ret5 = models.Book.objects.filter(price__gt=10).values('title','price')# print(ret5)# 查找memo字段是空的书ret6 = models.Book.objects.filter(memo__isnull=True)# print(ret6)#-----------------------------------------------------------------------------# 查找在北京的出版社ret7 = models.Publisher.objects.filter(city='北京')# print(ret7)# 查找名字以沙河开头的出版社ret8 = models.Publisher.objects.filter(name__startswith='沙河')# print(ret8)#查找"沙河出版社"出版的所有书籍ret9 =models.Book.objects.filter(Publisher__name='沙河出版社')# print(ret9)# 查找每个出版社出版价格最高的书籍价格# ret10 = models.Publisher.objects.all().annotate(max=Max('book__price')).values('name','max')# ret10 = models.Publisher.objects.annotate(max=Max('book_price')).values()# for i in ret10 :# print(i)# 查找每个出版社的名字以及出的书籍数量ret11 = models.Publisher.objects.annotate(count=Count('book__title')).values('name','count')# for i in ret11:# print(i)#---------------------------------------------------------------------------------------------------------#查找作者名字里面带"小"字的作者ret12 = models.Author.objects.filter(name__contains='小')# print(ret12)#查找年龄大于30岁的作者ret13 = models.Author.objects.filter(age__gt=30)# print(ret13)#查找手机号是155开头的作者ret14 = models.Author.objects.filter(phone__startswith=155)# print(ret14)#查找手机号是155开头的作者的姓名和年龄ret15 = models.Author.objects.filter(phone__startswith=155).values('name','age')# print(ret15)#查找每个作者写的价格最高的书籍价格# ret16 = models.Author.objects.annotate(max=Max('books__price')).values('name','max')ret16= models.Book.objects.values('author').annotate(max=Max('price')).values('author','max')# for i in ret16:# print(i)#查找每个作者的姓名以及出的书籍数量# ret17 = models.Author.objects.all().annotate(count=Count('books__title')).values('name','count')# for i in ret17 :# print(i)#-------------------------------------------------------------------------------------------------------#查找书名是"跟金老板学开车"的书的出版社ret18 = models.Publisher.objects.filter(book__title='跟金老板学开车')# print (ret18)#查找书名是"跟金老板学开车"的书的出版社所在的城市ret19 = models.Publisher.objects.filter(book__title='跟金老板学开车').values('city')# print(ret19)#查找书名是"跟金老板学开车"的书的出版社的名称ret20 = models.Publisher.objects.filter(book__title='跟金老板学开车').values('name')# print(ret20)#查找书名是"跟金老板学开车"的书的出版社出版的其他书籍的名字和价格pub_obj = models.Publisher.objects.get(book__title='跟金老板学开车')ret21= pub_obj.book_set.all().exclude(title='跟金老板学开车').values('title','price')print(ret21)#查找书名是"跟金老板学开车"的书的所有作者# ret22 = models.Author.objects.filter(books__title='跟金老板学开车')# print(ret22)#查找书名是"跟金老板学开车"的书的作者的年龄# ret23 = models.Author.objects.filter(books__title='跟金老板学开车').values('name','age')# print(ret23)#查找书名是"跟金老板学开车"的书的作者的手机号码# ret24 = models.Author.objects.filter(books__title='跟金老板学开车').values('name','phone')# print(ret24)#查找书名是"跟金老板学开车"的书的作者们的姓名以及出版的所有书籍名称和价钱# ret25= models.Author.objects.filter(books__title='跟金老板学开车')# print(ret25)# for i in ret25:# print(i.books.all().values('title','price'))## ret = models.Book.objects.aggregate(Max('price'))# print(ret)ret25 = models.Author.objects.values('name','books__title','books__price').filter(books__title='跟金老板学开车')print(ret25)感谢你能够认真阅读完这篇文章,希望小编分享的"Django中ORM练习题的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
出版
老板
出版社
作者
书名
价格
书籍
名字
沙河
姓名
年龄
开头
手机
北京
最高
名称
手机号
数量
日期
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
智能科技公司是互联网公司吗
麻工互联网科技
云电互联网科技
广州善班互联网科技
广州慧亚互联网科技怎么样
互联网公司科技股
如何创新互联网科技
互联网公司黑科技创始人
广州新华互联网科技学校电竞方面
爱医互联网络科技
卓翼科技产业互联网合作
互联网金融科技公司的优势
上海创道互联网络科技有限公司
扫呗互联网科技有限公司
新氧科技和美国互联网有关系吗
济南小医互联网科技有限公司招聘
数字互联网科技有限公司
知域互联网科技有限公司官网
前海云享互联网科技
湖北九亚互联网络科技有限公司
科技信息互联网
关于新基建和互联网科技
为想互联网科技
厦门千工互联网科技有限公司
想开互联网科技公司怎么样
科技互联网海报
版纳互联网科技选哪家
网互联网络科技
高科技和互联网的现代国家