Django – Models, Migration and Admin

Xin chào mọi người, như bài trước của team đã giới thiệu về App, Url và Template thì số lần này chúng mình sẽ cùng tìm hiểu về thành phần cơ bản của Django là model, cách migrate model với database và đi qua một chút về admin site sẵn có của Django nhé.

Model

Khái niệm

Django model được viết bằng Python và cung cấp cơ chế mapping tới cấu trúc dữ liệu cơ bản. Django sử dụng model để thực thi SQL ngầm và trả về những cấu trúc dữ liệu Python được gọi là Queryset. Data model sẽ được định nghĩa ở 1 nơi và tự động chuyển hoá dữ liệu từ nó.

Cách tạo model

Trong cấu trúc thư mục của Django mở app-name/models.py và chỉnh sửa nó.

Ở đây chúng ta sẽ tạo ra 2 model là QuestionChoice.

from django.db import models

# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField("date publish")

class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)

Ở đây mỗi model đại diện bởi 1 class là class con của django.db.models.Model. Mỗi model có một số các biến của class mỗi biến đều đại diện cho từng trường trong database.

Mỗi trường được đại diện bởi 1 instance của của class Fields. Mỗi kiểu dữ liệu sẽ tương ứng với 1 filed khác nhau. Ví dụ như: charField cho trường mang kiểu char… Tên của mỗi trường bạn đặt sẽ tương ứng với tên của mỗi cột trong database.

Một số trường có thể không, có 1 hoặc nhiều đối số.

Cuối cùng, sử dụng từ khoá ForeignKey để định nghĩa quan hệ giữa các bảng.

Activate model

Đầu tiên chúng ta cần phải báo cho project của chúng ta biết là app của chúng ta đã được cài đặt.

Để có thể bao gồm app trong project thì chúng ta cần thêm đường dẫn của nó vào lớp config trong INSTALLED_APPS. Lớp app-nameConfig nằm trong app-name/apps.py nên đường dẫn của nó sẽ là: ‘app-name.apps.App-nameConfig‘. Thêm bằng cách sửa trong file setting.py của project:

INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Sau đó chạy câu lệnh:
python3 manage.py makemigrations
Nếu thành công bạn sẽ nhìn thấy dòng tương tự như sau:
Migrations for 'polls':
polls/migrations/0001_initial.py
- Create model Question
- Create model Choice
Bằng cách câu lệnh makemigrations, bạn đã thông báo cho Django biết đã có sự thay đổi với các model của bạn và các thay đổi sẽ được lưu như là 1 migration.
Migration chính là cách để Django lưu trữ thay đổi của các model(cũng như database schema). Thông tin sẽ được lưu trên file app-name/migrations/0001_initial.py.
Bây giờ chạy câu lệnh:
python3 manage.py migrate
Câu lệnh migrate sẽ lấy tất cả các thay đổi model của bạn(migration) mà chưa được apply và chạy trên database – đồng bộ tất cả những thay đổi bạn đã tạo cho các model với schema trên database.
Migration rất mạnh mẽ và cho phép bạn thay đổi liên tục mà không cần phải xoá bảng, database hay tạo mới chúng, cũng như không làm mất dữ liệu.
3 bước cơ bản để thay đổi model đó là:
  • Thay đổi model(models.py)
  •  Chạy câu lệnh : python3 manage.py makemigrations để tạo các migration cho sự thay đổi.
  • Chạy lệnh: python3 manage.py migrate để áp dụng các thay đổi đó vào database.

Django Admin

Giới thiệu

Django cung cấp tự động cho bạn một giao diện admin cho các model để giúp bạn hay những người sử dụng có thể quản lý dữ liệu một cách hiệu quả.

Thao tác với admin site

Để truy cập vào admin site, chúng ta cần đăng kí một user. Chạy câu lệnh sau:
python3 manage.py createsuperuser
Sau đó điền username, email và password
Sau khi đăng ký thành công thì sẽ có thông báo như hình

Bắt đầu với development server

Chạy câu lệnh sau để run server:
python3 manage.py runserver
Sau đó thêm /admin vào đường dẫn để truy cập đến admin site
Điền thông tin đã đăng ký trước đó để đăng nhập và admin site
Giao diện trang admin:
Django đã cung cấp sẵn cho bạn các công cụ để thao tác trên admin site như thêm, sửa, xoá… Và bạn cũng có thể customize admin site theo mong muốn của mình.

Tổng kết

Như vậy là ở bài này mình đã giới thiệu với các bạn những kiến thức cơ bản về:
  • Model và cách tạo model trong Django.
  • Cơ chế migration và cách migrate khi thay đổi model.
  • Admin site trong Django.
Hi vọng các bạn sẽ thích bài viết cũng đóng góp ý kiến và đón chờ số sau của team. Xin chào và hẹn gặp lại.

Tài liệu tham khảo

Add a Comment

Scroll Up