Django shell の使い方(基本編)

Django

Django shell とは?

django shellはモデルを経由してデータベースを操作するためのツールです。
テストデータを入れたり、ちょっとしたデータの修正などとても重宝します。

CUIに不慣れな場合は難しく感じるかもしれませんが、習熟と共にdjangoのORM(オブジェクト関係マッピング)の理解が進むので、ぜひマスターしておきたい項目です。

*コンテンツをアップデート中です。(2020年4月13日現在)

前提条件

アプリケーションのmodels.pyは下記の様に設定されていたとします。

[編集中]

shellを起動する

$ python3 manage.py shell
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

>>>の部分にコードを入力します。

新規データを投入

appアプリケーションにPhoneモデルがある前提です。

>>> from app.models import Phone
>>> p1 = Phone(model_name="iphone",version="10")
>>> p1.save()

phoneアプリケーションディレクトリ内のmodels.pyで定義したPhoneクラスを呼び出しています。
Phoneクラスのmodel_nameとversionに値を設定し、save()メソッドで保存しています。(INSERTコマンドが実行されます。)

models.pyで”null=True”とされているカラムは入力必須ではありません。
デフォルトが入力必須ですので、空欄でもいいカラムは”null=True”を設定しましょう。

model_name = models.CharField(verbose_name='機種名', max_length=255, null=True, blank=True)

“blank=True”はフォームからの入力値が空欄でも可か不可かの設定です。
こちらもデフォルトは必須項目ですので注意が必要です。

データを更新

>>> from app.models import Phone
>>> a1 = Phone.objects.get(pk=1)
>>> a1.screen_size=5.5
>>> a1.save()

登録済データのインスタンスを呼び出すにはクラス名.objects.get()メソッドを使用します。(UPDATEコマンドが実行されます。)

リレーションデータの取扱

ForeignKeyが指定しているフィールドには関連クラスのインスタンスしか代入出来ません。
PhoneクラスからForeignKey指定しているMakerクラスがある前提です。

>>> from app.models import Phone, Maker
>>> m1 = Maker.objects.get(pk=2)
>>> p1 = Applicant(model_name="Pixel", maker=m1)
>>> p1.maker
<Maker: Google>
>>> p1.save()

ModelFormの使い方

ModelFormと汎用View(generic)を使う基本的な例を示します。
[編集中]

タイトルとURLをコピーしました