MODEL模型:
- 數據邏輯的處理
- 創立資料
- 取得資料
- 新增資料
- 刪除資料
- 資料庫的欄位
- 每一個Models.py都是一個資料表
產生資料
修改 mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql', #PostgreSQL
'NAME': 'dbDjango', #資料庫名稱
'USER': 'postgres', #資料庫帳號
'PASSWORD': 'postgres', #資料庫密碼
'HOST': 'localhost', #Server(伺服器)位址
'PORT': '5432' #PostgreSQL Port號
}
}
輸入下面的指令來產生 migrate
$ python manage.py migrate
修改 polls/models.py
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
輸入下面的指令來為我們對於 model 的改動產生 migrate,這邊只是產生一個紀錄欓,紀錄變化。
$ python manage.py makemigrations polls
Migrations for 'polls':
polls/migrations/0001_initial.py
- Create model Question
- Create model Choice
可以輸入以下指令觀看這次的遷移運行了哪些SQL
$ python manage.py sqlmigrate polls 0001
BEGIN;
--
-- Create model Question
--
CREATE TABLE "polls_question" (
"id" serial NOT NULL PRIMARY KEY,
"question_text" varchar(200) NOT NULL,
"pub_date" timestamp with time zone NOT NULL
);
--
-- Create model Choice
--
CREATE TABLE "polls_choice" (
"id" serial NOT NULL PRIMARY KEY,
"choice_text" varchar(200) NOT NULL,
"votes" integer NOT NULL,
"question_id" integer NOT NULL
);
ALTER TABLE "polls_choice"
ADD CONSTRAINT "polls_choice_question_id_c5b4b260_fk_polls_question_id"
FOREIGN KEY ("question_id")
REFERENCES "polls_question" ("id")
DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX "polls_choice_question_id_c5b4b260" ON "polls_choice" ("question_id");
COMMIT;
輸入下面的指令來將我們的 migrate 實際寫入資料庫中
$ python manage.py migrate polls
建立 Superuser
執行指令並輸入帳號密碼與電子信箱
$ python manage.py createsuperuser
編輯 polls/admin.py
from django.contrib import admin
from .models import Question
admin.site.register(Question)
進入 Admin
開啟瀏覽器連接 http://localhost:8000/admin/
輸入剛剛建立的 Superuser 就可以看到整個 Admin 介面,可以從這邊查看資料庫的狀況