Django提供一個API作為與資料庫的接口,只要進入shell輸入指令就可以來操作資料庫了。
python3 manage.py shell
>>> from quiz.models import Question, Choice # 匯入model
>>> Question.objects.all() # 列出資料庫的所有列
<QuerySet []> # 結果表示目前還沒有任何資料
>>> q = Question(question_text="哈利波特中,普等巫測成績等級最高的是?") # 新增資料列
>>> q.save() # 完成這一步才算儲存
>>> q.id
1 # Django本身內建id欄位
>>> q.question_text
"哈利波特中,普等巫測成績等級最高的是?"
>>> q.question_text = "佛地魔的本名是?" # 更改資料
>>> q.save()
>>> Question.objects.all()
<QuerySet [<Question: Question object (1)>]>
OK,這樣根本看不出來它是誰,需要幫models.py加點東西:
from django.db import models
class Question(models.Model):
# ...
def __str__(self):
return self.question_text
class Choice(models.Model):
# ...
def __str__(self):
return self.choice_text
再跑一次:
<QuerySet [<Question: 佛地魔的本名是?>]>
新增題目選項:
>>> q = Question.objects.get(pk=1) # pk:primary_key,由於我們在models.py並沒有指定其他欄位為主鍵,Django本身默認id為主鍵,固代入id=1也可以。
>>> q.choice_set.all() # 得到該Question相關的Choice
<QuerySet []> # 還沒有新增所以得到一個空的list
>>> c = q.choice_set.create(choice_text='Tom Marvolo Riddle', score=10)
>>> c.question # Choice所屬的Question
<Question: 佛地魔的本名是?>
# 繼續新增Choice
>>> q.choice_set.create(choice_text='Tom Marvilo Riddle', score=0)
>>> q.choice_set.create(choice_text='Tom Marvin Riddle', score=0)
>>> q.choice_set.create(choice_text='Tom Ravolo Riddle', score=0)
>>> q.choice_set.all()
<QuerySet [<Choice: Tom Marvolo Riddle>, <Choice: Tom Marvilo Riddle>, <Choice: Tom Marvin Riddle>, <Choice: Tom Ravolo Riddle>]>