作成・更新・削除
データの作成・更新・削除
DjangoのORMを使用して、データの作成・更新・削除を行うのは簡単に行えます。
データの取得については既に触れましたが、あとは作成と更新、削除を覚えればCRUDの全ての処理をDjangoで行うことができるようになります。
今回もサンプルのmodels.pyを用意します。
models.py
class Article(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
is_published = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
class Comment(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
データの作成
データを作成するには、そのままclass名を指定して、引数にフィールド名を入れていきます。
例
article = Article()
article.title = 'テスト'
article.body = 'これはテストです。'
article.is_published = True
article.save()
まずはクラス名を指定して、それぞれフィールドに該当する値を代入していき、最後にsave()
をすることでデータの作成が完了します。
Article()
の引数に全て・一部指定することも可能です。
例
article = Article(
title='テスト', body='これはテストです。', is_published=True
)
article.save()
またsave()
ではなくobjects.create()
を使用してデータを作成することも可能です。
上記の書き方ではどうしても2行になってしまうので1行に収めたい場合、objects.create()
を使うと良いでしょう。
objects.create()
Article.objects.create(
title='テスト', body='これはテストです。', is_published=True
)
データの更新
データの更新もほぼ作成と同じで簡単に行うことができます。
作成と違って更新の場合には、既に存在するデータを取得します。
そしてフィールドに値を代入していきます。
例
article = Article.objects.get(id=5)
article.is_published = False
article.save()
こうすることで、データを新しく作成することなく、id=5
のArticleを更新することができます。
objects.filter()
でデータを取得してデータの更新を行うことも可能です。
この場合は、複数データがある場合は該当する全てのデータが更新されるので注意してください。
例
Article.objects.filter(id=5).update(is_published=False)
通常データを更新するだけなら、データを取得してsave()
を行うより、
データをそのままフィルタリングしてupdate()
する上記の例の方が処理は断然に早くなります。
状況に応じて使い分けましょう。
データの削除
データの削除には、delete()
を使います。
データが単体であれ、複数のクエリセット であれ最後にdelete()
を使うことで該当のデータを削除できます。
例
# データを取得してから削除
article = Article.objects.get(id=5)
article.delete()
# クエリを飛ばしてそのままデータを削除
Article.objects.filter(id=5).delete()
まずはこれらCRUDの基本を覚えてデータを柔軟に扱えるようになっておきましょう。
Just Python フリープラン
ジャスパイなら教材は全て無料!