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 os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ORMHomework.settings")

import django

django.setup()

from app01 import models

from 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)

答案

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python123测验9程序题答案_Django ORM 练习题及答案_python_脚本之家相关推荐

  1. python123测验7程序题答案_Python语言程序设计 Python123 测验7: 文件和数据格式化(编程题)...

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_42067082/articl ...

  2. python123测验9程序题_python程序设计实验二

    Python程序设计实验安徽工程大学 班级:物流191       姓名:许岚岚      学号:3190505110 日期:2020年3月21日指导教师:修 宇 实验二 顺序结构程序设计(验证性实验 ...

  3. python123测验9程序题_python函数题

    请大家严格按照下面顺序编写圆形生成器程序. : 定义函数getCircleArea(r),可以对指定r计算圆面积.计算公式math库的pi*r*r. 定义函数get_rList(n),功能:输入n个值 ...

  4. python123测验4程序题_Python面试题245道(从基础到高级)123~141——网络编程,Web—Flask...

    Python 工程师也分不同的技术岗位,初级.中级与高级开发工程师需要具备的技能也不同. 然而,无论是零经验还是 Python 老司机,对待每一次面试与笔试,都不能轻视,不能打无准备之战!今天开始,要 ...

  5. 5y计算机应用基础题库,数学log练习题和答案.doc

    数学log练习题和答案 数学log练习题和答案 A. B.12 C.1 D.log127 log123+log124=log12=1.故选C. C 2.log52·log25的值为 1A. B.1 3 ...

  6. Python123测验4: 程序的控制结构 (第4周)

    1.for var in ___: print(var) 哪个选项不符合上述程序空白处的语法要求?‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪ ...

  7. Java_数组练习答案_Java数组练习题带答案.doc

    <Java数组练习题带答案.doc>由会员分享,可在线阅读,更多相关<Java数组练习题带答案.doc(11页珍藏版)>请在人人文库网上搜索. 1.一 填空题1) 数组的元素通 ...

  8. python练习题及答案-python编程练习题和答案.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython python编程练习题和答案.doc3页 本文档一 ...

  9. java循环练习题及答案_循环练习题及答案

    Java循环练习题及答案 1,任意输入一个整数(小于10位),求它的位数 import java.util.Scanner; public class BitNum { } public static ...

最新文章

  1. 浅显易懂 Makefile 入门 (12)— Makefile 常见的错误信息
  2. Python之路【第八篇】python实现线程池
  3. Windows Server查看和记录远程登录信息的方法
  4. 循环拼接String字符串去掉最后一个字符的方法
  5. iOS开发笔记 基于wsdl2objc调用asp.net WebService
  6. ssh开发所需要的架包
  7. 打印Activity任务栈脚本:adb shell dumpsys activity
  8. 罗永浩宣布春节后回归科技界;2021年年终奖人均水平为2.3万元;消息人士:字节跳动日均进账10.07亿 | EA周报...
  9. 饭店点餐系统的需求分析_酒店评论的情绪分析主题建模
  10. GeForce Experience界面重叠解决办法
  11. 关键词提取面临问题及挑战
  12. 清微智能CTO欧阳鹏:架构创新是通往高性能计算芯片必由之路|量子位·视点分享回顾...
  13. Oracle实现递归查询
  14. 【用HTML+CSS实现简单的轮播图片效果】
  15. 如何根据快递单号物流信息自动识别快递状态
  16. ie的主页被修改了,改不过来怎么办??
  17. Windows/Ubuntu16.04双系统和ros安装方法及可能出现的问题
  18. 我的 网上商城网站布局 练习(含效果图和源码)
  19. 狂神JavaWeb课程笔记
  20. USB PC to PC通讯、USB互联线API简介.doc

热门文章

  1. 36套java精品高级课_Dubbo-ZooKeeper“走一波”
  2. 服务器操作系统与安装步骤,服务器操作系统与安装步骤
  3. android 跨应用,Android跨应用获取资源
  4. 脉冲宽度调制pdm_PWM (脉冲宽度调制)原理与实现
  5. redis 管理工具_Redis桌面管理工具Redis Desktop Manager 2019.2发布
  6. java sca视频教程_如何进入Java SCA软件的开发
  7. get 参数太长怎么办_新买的手表表带太长了该怎么办?表带调节操作方法get你~...
  8. matlab求RMSECV,CARS 用于matlab模式识别(分类和回归)的特征变量提取方法 联合开发网 - pudn.com...
  9. html5 css3考试f卷,HTML5 CSS3 JavaScriptWeb前端开发自测试卷3.docx
  10. linux如何运行qt源码,Linux/Ubuntu下编译Qt4.8.2源码