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à Question và Choice.
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',
]
python3 manage.py makemigrations
Migrations for 'polls':
polls/migrations/0001_initial.py
- Create model Question
- Create model Choice
python3 manage.py migrate
- 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
Thao tác với admin site
Bắt đầu với development server
python3 manage.py runserver
/admin
vào đường dẫn để truy cập đến admin siteTổng kết
- Model và cách tạo model trong Django.
- Cơ chế migration và cách migrate khi thay đổi model.
- Admin site trong Django.