行の作成
CoddyのDjangoジャーニー「モデルと管理サイト」セクションの一部。レッスン 7/23。
本棚には新しい本が必要ですが、データベースが使う言語であるSQLを書くことはありません。すべてのモデルにはBook.objectsというマネージャーがあり、そのメソッドでテーブルのデータを読み書きします。DjangoのORM(オブジェクトリレーショナルマッパー)は、これらの呼び出しをSQLに変換します。この章では、explore.pyにORMコードを書きます。実行すると9冊の本が追加され、その後、python manage.py shell < explore.pyを実行した場合と同じようにファイルが実行され、出力内容がコンソールに表示されます。
Book.objects.create(title="Beloved", author="Toni Morrison", year=1987, price="13.00")create()は行を作成し、1回の手順で保存します。省略したフィールドにはデフォルト値が使われます。途中で変更を加える場合は、同じことを2つの手順で行います。
silmarillion = Book(title="The Silmarillion", author="J.R.R. Tolkien", year=1977, price="10.50")
silmarillion.is_read = True
silmarillion.save()save()が実行されるまでは、そのオブジェクトはPython内にのみ存在し、idはNoneです。
チャレンジ
簡単explore.pyで、printの上に本を2冊追加します。
create()を使って、Andy Weir作のProject Hail Maryを追加します。出版年は2021、価格は12.99、ジャンルはサイエンスフィクションです。ラベルではなく、ジャンルの値であるscifiを保存します。Genreクラスから取得してください。Bookを作成してsave()を呼び出し、Kazuo Ishiguro作のKlara and the Sunを追加します。出版年は2021、価格は11.50です。
「実行」を押すと、コンソールに11 books on the shelfと表示されます。
自分で試してみよう
from books.models import Book
# ここに2冊の本を追加してください。
print(Book.objects.count(), "books on the shelf")
モデルと管理サイトのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド