Django の基本事項のメモ書き.
Python シェルの起動
Django のデータベース API,つまり,Django が提供する DB のテーブル,レコードを操作する API(ORM)は,manage.py
経由で起動する Python シェルにより使うことができる.シェルを起動するコマンドは以下の通り.
# $ python これだと DB API が使えない $ python manage.py shell
単なる python
コマンドではなく,manage.py
経由で Python シェルを起動することで,DJANGO_SETTINGS_MODULE
環境変数が設定され,Djnago に config/settings.py
ファイルへの import パスが与えられる.
これにより設定が読み込まれ,Django のデータベース API が使用できる Python シェルが起動される.
シェル起動後のモデルの import
シェルを起動したら実際にデータベース API を使ってみる.データベース API を使うには,はじめに models.py
に実装した各モデルを import すれば良い.
>>> from [app-name].models import [model1], [model2], ...
例えば,Django の公式チュートリアルで実装した polls というアプリケーションのモデルを import する場合は以下のようになる(ここでは,同時に timestamp を扱うためのモジュールも import している).
>>> from polls.models import Question, Choice >>> from django.utils import timezone
テーブルのレコード一覧を取得
[model].objects.[クエリ]
によってレコードの操作ができる.クエリの結果はクエリセット(モデルインスタンスのリスト,つまり,クエリの結果取得できたそのテーブルの「レコードのリスト」だと考えれば良い),またはモデルインスタンス(レコード)として返される.
公式チュートリアルを参考にサンプルコードを以下に示す.
# 全レコード取得 >>> Question.objects.all() # クエリセット # レコードを一件取得 >>> Question.objects.all()[0] # モデルインスタンス # レコードの更新:一件のレコードを取得して編集,保存 >>> q = Question.objects.all()[0] >>> q.question_text # 変更前 >>> q.question_text = 'hoge' >>> q.question_text # 変更の確認 >>> q.save() # 更新
q
の属性を変更し,q.save()
を実行することでレコードの更新が完了する.