Luyện tập truy vấn ORM

Luyện tập truy vấn ORM

Bảng mục lục

  • Luyện tập truy vấn ORM
  • Cấu trúc bảng
  • Câu hỏi bài tập
  • Dữ liệu kiểm tra
  • Chuẩn bị
  • Xem các bảng
  • Đáp án tham khảo

Cấu trúc bảng

# Sách
class Sach(models.Model):
    ten_sach = models.CharField(max_length=32)
    ngay_xb = models.DateField(auto_now_add=True)
    gia = models.DecimalField(max_digits=5, decimal_places=2)
    ghi_chu = models.TextField(null=True)
    nha_xuat_ban = models.ForeignKey(to="NhaXuatBan")
    tac_gia = models.ManyToManyField(to="TacGia")

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

# Nhà xuất bản
class NhaXuatBan(models.Model):
    ten_nxb = models.CharField(max_length=32)
    thanh_pho = models.CharField(max_length=32)

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

# Tác giả
class TacGia(models.Model):
    ten_tg = models.CharField(max_length=32)
    tuoi = models.IntegerField()
    so_dienThoai = models.CharField(max_length=11)

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

Câu hỏi bài tập

"""
Tìm tất cả các cuốn sách có tên chứa chữ 'Vua Kim'
Tìm các sách được xuất bản vào năm 2018
Tìm tên các sách được xuất bản vào năm 2017
Tìm các sách có giá lớn hơn 10元
Tìm tên và giá các sách có giá lớn hơn 10元
Tìm các sách có trường ghi_chu là null

Tìm các nhà xuất bản ở thành phố 'Beijing'
Tìm các nhà xuất bản có tên bắt đầu bằng 'Sha He'

Tìm tất cả các sách được xuất bản bởi 'Sha He Publisher'
Tìm giá sách cao nhất mỗi nhà xuất bản đã xuất bản
Tìm tên nhà xuất bản và số lượng sách mỗi nhà xuất bản đã xuất bản

Tìm các tác giả có tên chứa chữ 'nho'
Tìm các tác giả có tuổi trên 30
Tìm các tác giả có số điện thoại bắt đầu bằng '155'
Tìm tên và tuổi các tác giả có số điện thoại bắt đầu bằng '155'

Tìm giá sách cao nhất mỗi tác giả đã viết
Tìm tên tác giả và số lượng sách mỗi tác giả đã viết

Tìm nhà xuất bản của sách có tên 'Học lái xe cùng Vua Kim'
Tìm thành phố của nhà xuất bản sách có tên 'Học lái xe cùng Vua Kim'
Tìm tên nhà xuất bản của sách có tên 'Học lái xe cùng Vua Kim'
Tìm tên và giá các sách khác được xuất bản bởi cùng nhà xuất bản với sách 'Học lái xe cùng Vua Kim'

Tìm các tác giả của sách có tên 'Học lái xe cùng Vua Kim'
Tìm tuổi của các tác giả của sách có tên 'Học lái xe cùng Vua Kim'
Tìm số điện thoại của các tác giả của sách có tên 'Học lái xe cùng Vua Kim'
Tìm tên các tác giả của sách 'Học lái xe cùng Vua Kim' và các sách khác họ đã viết cùng với giá
"""

Dữ liệu kiểm tra

-- ----------------------------
-- Dữ liệu của bảng app01_tacgia
-- ----------------------------
INSERT INTO `app01_tacgia` VALUES ('1', 'Vua Kim', '18', '15512351234');
INSERT INTO `app01_tacgia` VALUES ('2', 'Nhỏ Nezha', '20', '15312341234');
INSERT INTO `app01_tacgia` VALUES ('3', 'Alex', '73', '15512341234');

-- ----------------------------
-- Dữ liệu của bảng app01_nhxuatban
-- ----------------------------
INSERT INTO `app01_nhxuatban` VALUES ('1', 'Sha He Publisher', 'Beijing');
INSERT INTO `app01_nhxuatban` VALUES ('2', 'Xi Er Qi Publisher', 'Beijing');
INSERT INTO `app01_nhxuatban` VALUES ('3', 'Zhang Jiang Publisher', 'Shanghai');
INSERT INTO `app01_nhxuatban` VALUES ('4', 'Sha He Publisher', 'Shanghai');

-- ----------------------------
-- Dữ liệu của bảng app01_sach
-- ----------------------------
INSERT INTO `app01_sach` VALUES ('1', 'Học lái xe cùng Vua Kim', '2018-08-03', '12.90', null, '1');
INSERT INTO `app01_sach` VALUES ('2', 'Học lái tàu ngầm cùng Vua Kim', '2017-08-10', '9.99', null, '1');
INSERT INTO `app01_sach` VALUES ('3', 'Học tư duy cùng Xiao Zhu', '2018-09-03', '39.99', null, '2');
INSERT INTO `app01_sach` VALUES ('4', 'Học gọi mic cùng Egon', '2018-06-12', '0.99', null, '4');

-- ----------------------------
-- Dữ liệu của bảng app01_sach_tacgia
-- ----------------------------
INSERT INTO `app01_sach_tacgia` VALUES ('3', '1', '1');
INSERT INTO `app01_sach_tacgia` VALUES ('4', '1', '2');
INSERT INTO `app01_sach_tacgia` VALUES ('5', '2', '1');
INSERT INTO `app01_sach_tacgia` VALUES ('2', '2', '2');
INSERT INTO `app01_sach_tacgia` VALUES ('6', '3', '3');
INSERT INTO `app01_sach_tacgia` VALUES ('7', '4', '3');

Chuẩn bị

  • Bước 1: Tạo dự án Django
  • Bước 2: Tạo ứng dụng có tên app01 để lưu trữ dữ liệu
  • Bước 3: Cấu hình settings.py cho cơ sở dữ liệu và đăng ký ứng dụng
  • Bước 4: Thêm dữ liệu kiểm tra
  • Bước 5: Tạo file Python để viết các truy vấn ORM
  • Bước 6: Viết các truy vấn ORM để hoàn thành bài tập

Xem các bảng

Đáp án tham khảo

Xem đáp án tại đây

Thẻ: orm Django Luyện tập

Đăng vào ngày 29 tháng 6 lúc 22:52