Dùng Model tạo Bảng Database trong Python Django

Lập trình web với Python bằng Django

0.0 (0 đánh giá)
Tạo bởi Lê Châu Cập nhật lần cuối 00:28 09-10-2019 15.554 lượt xem 1 bình luận
Học nhanh

Danh sách bài học

Dùng Model tạo Bảng Database trong Python Django

Ghi chú

Nội dung bài viết bạn đang xem được update từ tháng 06/2019. Vì vậy sẽ có đôi chút khác biệt giữ VIDEO và NỘI DUNG BÀI VIẾT.

Chúng ta sẽ có nhiều cập nhập hơn về cả bài viết lẫn video trong thời gian tới. Nhớ like/ share hoặc đánh giá 5 sao để Kteam có động lực nhé! 

Cảm ơn các bạn! 


Dẫn nhập

Sau khi THIẾT KẾ HOÀN CHỈNH WEBSITE BLOG, chúng ta sẽ bắt đầu tạo ra bảng lưu trữ các bài viết để hiển thị lên giao diện.


Nội dung

Để theo dõi bài này tốt nhất, bạn nên xem qua bài:

Bài này sẽ giới thiệu những nội dung sau:

  • Khái niệm ORM
  • Tạo bảng Post để lưu trữ các bài viết
  • Migration là gì?

Khái niệm ORM

Object-Relational Mapping (ORM) là một kĩ thuật cho phép chúng ta truy vấn và quản lý dữ liệu từ database bằng cách sử dụng mô hình hướng đối tượng. Khi nhắc đến ORM, hầu hết mọi người đều nói đến thư viện đã áp dụng kĩ thuật ORM.

 

Những thư viện ORM là những thư viện đã hoàn chỉnh được viết bằng ngôn ngữ lập trình bạn đang dùng và nó đã gói nhóm code cần thiết để quản lý data, như vậy bạn không cần sử dụng SQL nữa, bạn sẽ tương tác trực tiếp qua cách viết hướng đối tượng của ngôn ngữ bạn đang sử dụng


Tạo bảng Post lưu trữ các bài viết

Bây giờ Kteam sẽ tạo một app Blog nhằm quản lý các table liên quan đến bài viết, đầu tiên sẽ dùng lệnh startapp để tạp app Blog:

python manage.py startapp blog

Sau đó, khai báo settings.py có thêm app mới:

Bây giờ ta vào file models.py trong app blog để thiết kế bảng Post:

Kteam muốn tạo một bảng Post có 3 cột là:

  • title: lưu tiêu đề bài viết, có đồ dài tối đa là 100 kí tự
  • body: nội dung bài viết, không giới hạn kí tự
  • date: ngày viết bài, tự thêm ngày hiện tại khi tạo ra bài viết

Dựa vào thư viện models được hỗ trợ trong Django, Kteam sẽ thiết kế class Post để map với bảng Post như sau:

class Post(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    date = models.DateTimeField(auto_now_add=True)

Ý nghĩa dòng code như sau:

  • Khai báo class Post kế thừa models.Model, là class được viết ra ánh xạ đến bảng trong Database.
  • Khai báo field title ánh xạ đến cột title trong bảng. Field title sẽ thuộc CharField có tham số max_length=100, có nghĩa cột title sẽ lưu trữ kiểu String và dài nhất 100 ký tự.
  • Khai báo field body ánh xạ đến cột body trong bảng. Field body sẽ thuộc TextField, có nghĩa cột body lưu trữ kiểu String vài không giới hạn độ dài.
  • Khai báo field  date ánh xạ đến cột date trong bảng. Field date sẽ có thuộc tính DateTimeField có tham số auto_now_add=True, có nghĩa cột date lưu kiểu Date và tự động thêm ngày hiện tại cho record mới.

Migrations là gì?

Migrations là những cách Django kiểm tra sự thay đổi mà bạn đã tác động đến các models (thêm hay xoá model, thêm sửa xoá các field trong models, …) mà bạn muốn nó tác động đến database của bạn. Migrations được thiết kế cách tự động, tuy nhiên bạn nên cần biết để dễ config và chỉnh sửa.

Như hướng dẫn trên, Kteam vừa thiết kế xong model Post, bây giờ chúng ta bắt đầu cho Django tác động đến Database bây giờ.

Như những bài trước có nói về Database, khi bạn mới tạo project Django, Django sẽ mặc định config là database SQLite, là 1 database đơn giản giúp bạn dễ học và dễ làm dự án lúc đầu. Ở file settings.py có dòng code này thể hiện rõ:

Django hiện tại chỉ có hỗ trợ ORM cho 4 hệ quản trị cơ sở dữ liệu là: SQLite, MySQL, PostgreSQL Oracle. Nếu bạn muốn đổi sử dụng Database trong nhóm này thì có thể đọc ở link này để tham khảo.

Bây giờ, chúng ta sẽ tạo ra file migration cho Database ta đã thiết kế một model Post trong app blog:

python manage.py makemigrations blog

Lệnh makemigrations để tạo các file migration, ta thêm blog để báo cho Django biết ta vừa thiết kế ở app blog. Nếu không ghi tên app thì Django sẽ quét toàn bộ các app hiện tại.

Sau khi chạy lệnh này, ở folder migrations trong blog đã có 1 file migration đầu tiên:

File migration này nhằm xử lý sẽ tác động đến database tạo ra bảng Post. Sau này bạn chỉnh sửa các file models.py thì khi makemigrations sẽ có thêm các file migration, nó như là các file lịch sử bạn đã tác động gì đến database.

Bây giờ, ta cần bắt django chạy các file migration này để nó thực hiện đến database. Ta sẽ chạy lệnh migrate để xem kết quả:

Kết quả nói rằng đã chạy các file migration thành công. Bây giờ ta sẽ mở database xem kết quả như thế nào.

Vì bây giờ Kteam đang sử SQLite, nên Kteam sẽ dùng phần mềm DB Browser for SQLite để mở file db.sqlite3 trong project Django:

Như hình ảnh trên, db.sqlite3 đã thêm 1 bảng là blog_post chính là model Post trong app Blog. Ngoài các cột title, body và date thì có thêm cột id (là id để phân biệt các record, giá trị sẽ tự tăng) đây là cột sẽ bắt buộc có ở mỗi table mà Django đã mặc định trước.


Kết

Như vậy Kteam đã hướng dẫn các bạn xong cách dùng Model tạo bảng Database trong Python Django.

Ở bài tiếp theo, Kteam sẽ giới thiệu cho các bạn TƯƠNG TÁC DATABASE BẰNG PYTHON

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả

Quan tâm lập trình và lịch sử.

Thích xem Anime, Marvel DC,..

Khóa học

Lập trình web với Python bằng Django

Lập trình web với Python bằng Django

Đánh giá

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
fakerpbc đã bình luận 06:06 05-02-2018

video die. please help fix video. Thanks 

Không có video.