Menu
CoddyTech

行の作成

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です。

challenge icon

チャレンジ

簡単

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プレイグラウンド