djangoでForeignKeyを持つテーブルにオブジェクトを指定してcreateしてみる

djangoでForeignKeyを持つテーブルにオブジェクトを指定してcreateしてみる

ORMについてはチートシートを作っていなかったので少しずつ増やしていきたいと思います。

モデル

モデルは下の通り。


from django.db import models

class Writer(models.Model):
    name = models.CharField(max_length=128)

class Article(models.Model):
    writer = models.ForeignKey(Writer, on_delete=models.CASCADE , related_name='articles')
    title = models.CharField(max_length=512)
    contents = models.TextField()

プログラム

プログラムは下の通り。


python3.6 manage.py shell
# モデルをインポートする。
>>> from myapp.models import Writer, Article
#  筆者のオブジェクトを取得する。
>>> selected_writer = Writer.objects.get(id=1)
# 筆者のオブジェクト(satoh)を確認する。
>>> vars(selected_writer)
{'_state': , 'id': 1, 'name': 'satoh'}

# 筆者のオブジェクトから ForeignKey のフィールドを指定して本のオブジェクトを取得する。
>>> selected_articles = Article.objects.filter(writer=selected_writer)
# 筆者のオブジェクトから ForeignKey のフィールドを指定して本のデータを生成しオブジェクトを取得する。
>>> created_article = Article.objects.create(writer=selected_writer, title='go', contents='go for beginner')
# 生成した本のおジェクトを確認する。
>>> vars(created_article)
{'_state': , 'id': 6, 'writer_id': 1, 'title': 'go', 'contents': 'go for beginner'}

YouTube