こんにちは、私は Django の初心者で、プロジェクト モデルとタスク モデルを使用してアプリを作成しようとしています。すべてのプロジェクトには、1 つ以上のタスクがあります。私がやりたいことは、TaskHistory モデルを追加することであり、すべてのタスクには 1 つ以上のタスク履歴があります。タスクの何かを変更するたびに (これは何度も編集する必要があるため)、関連付けられた新しい TaskHistory を作成する必要があります。出来ますか ?
1 に答える
それは可能ですが、Django モデルで直接ではなく、アプリケーション/ビュー レイヤーでコーディングされる可能性が高いものです。あなたが試みていることは、標準django.contrib.admin
アプリケーションの一部として作成されるログ エントリとほぼ一致しているように見えるので、このアプリでアイデアを探す必要があります。 管理インターフェイスでオブジェクトが更新、作成、または削除されるたびdjango.contrib.admin
に、エントリをテーブルに記録します。LogEntry
アプリケーションでは、タスクが作成されたかどうかだけでなく、タスクの説明の変更など、モデル コンテンツの変更を保存する必要がある可能性があります。これを実現するには、オブジェクトを作成できるように、現在のタスク オブジェクトと更新されたタスクの詳細の両方が必要になる可能性がありTaskHistory
ます。
タスクを変更できる各ビューには、オブジェクトを作成しTaskHistory
、更新された/新しいオブジェクトTask
とTaskHistory
オブジェクトの両方を独立したモデル オブジェクトとして保存し、変更をアトミックに表示するためにデータベース レベルのトランザクションにラップすることもできるロジックも含まれます。