Chapter 01無料公開

はじめに

りーほー
りーほー
2021.02.17に更新

本書の目的

本書ではDjangoのモデルに論理削除を導入することを目的としています。
Djangoの初心者でも導入しやすいように解説は初心者向けです。

論理削除ってなに?

論理削除とは実際にはデータを削除せずに、削除したとしてデータ検索などの処理を行います。
論理削除は削除したデータを用意に復元したり確認できたりできることがメリットです。

論理削除の実装方法

論理削除の実装まずにはdeleted_atカラムを用意します。
削除されたらdeleted_atカラムに日時を入れます。検索するときはdeleted_atカラムに日時が入っているものは除外して検索をします。
論理削除をしたデータを復元する場合はdeleted_atカラムにnullを入れます。

実際にデータを削除することは物理削除といいます。
物理削除を行った場合は復元はできません。

どのように導入するの?

本書では論理削除の導入方法を2つ紹介しています。

  • モデルに論理削除を導入
  • ベースモデルで論理削除を導入

各導入方法でメリット、デメリットを紹介しています。
プロジェクトにあった導入方法を選んで導入して下さい。

導入したらどうやって使うの?

使い勝手が良くなるよう配慮をし、Djangoのドキュメント通りに検索をしたらデフォルトで論理削除したデータを除外して取得できるようにしました。
フィルタを用いて特定のオブジェクトを取得する

論理削除をしたデータを除外して検索する場合は、次のようにDjangoのドキュメント通りの検索をします。

from models/product.py import Product # 論理削除を導入したモデル

# 論理削除をしたデータを除外して検索
products = Product.objects.filter(...)

論理削除したデータも含めて検索する場合は、次のように独自に定義したall_objectsを使用して検索します。

from models/product.py import Product # 論理削除を導入したモデル

# 論理削除したデータも含めて検索
products = Product.all_objects.filter(...)

その他詳しい使い方は「使い方」のチャプターで説明します。

更新について

この本は読者の方のフィードバックにより随時加筆・修正を行います。
またDjangoのアップデートにより改善や変更が加わる場合には可能な限り追従し、修正していく予定です。

値段について

販売価格を変更する場合がございます。
ご了承ください。

免責事項

本書の目的はDjangoのモデルに論理削除を導入することです。
そのため、読者のサービスのセキュリティ等の安全性までを保証するものではありません。

本書の内容について細心の注意を払っておりますが、

  • 正確性
  • 最新
  • 安全性

などについて保証をするものではありませんので、筆者が何らかの責任を負うものではありません。

フィードバックのお願い

わかりにくいところや改善したほうが良いところなどがあれば随時修正いたしますので、フィードバックをお願いします。読者の方のお声を元により良い本にしていきたいと思います。