ORM练习

一、表结构

#
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)
    # 创建外键,关联publish
    publisher = models.ForeignKey(to="Publisher")
    # 创建多对多关联author
    author = models.ManyToManyField(to="Author")

    def __str__(self):
        return "<Book object: {} {}>".format(self.id, self.title)


# 出版社
class Publisher(models.Model):
    name = models.CharField(max_length=32)
    city = models.CharField(max_length=32)

    def __str__(self):
        return "<Publisher object: {} {}>".format(self.id, self.name)


# 作者
class Author(models.Model):
    name = models.CharField(max_length=32)
    age = models.IntegerField()
    phone = models.CharField(max_length=11)

    def __str__(self):
        return "<Author object: {} {}>".format(self.id, self.name)

 

二、练习题

"""
查找所有书名里包含金老板的书
查找出版日期是2018年的书
查找出版日期是2017年的书名
查找价格大于10元的书
查找价格大于10元的书名和价格
查找memo字段是空的书

查找在北京的出版社
查找名字以沙河开头的出版社

查找“沙河出版社”出版的所有书籍
查找每个出版社出版价格最高的书籍价格
查找每个出版社的名字以及出的书籍数量

查找作者名字里面带“小”字的作者
查找年龄大于30岁的作者
查找手机号是155开头的作者
查找手机号是155开头的作者的姓名和年龄

查找每个作者写的价格最高的书籍价格
查找每个作者的姓名以及出的书籍数量

查找书名是“跟金老板学开车”的书的出版社
查找书名是“跟金老板学开车”的书的出版社所在的城市
查找书名是“跟金老板学开车”的书的出版社的名称
查找书名是“跟金老板学开车”的书的出版社出版的其他书籍的名字和价格

查找书名是“跟金老板学开车”的书的所有作者
查找书名是“跟金老板学开车”的书的作者的年龄
查找书名是“跟金老板学开车”的书的作者的手机号码
查找书名是“跟金老板学开车”的书的作者们的姓名以及出版的所有书籍名称和价钱

"""

 

测试数据:

-- ----------------------------

-- 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''1''2');
INSERT INTO `app01_book_author` VALUES ('5''2''1');
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''4''3');

 

转载于:https://www.cnblogs.com/LW-5208/articles/10078057.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值