2016-05-04 10 views
1

の承認を待って、データベースにコミットする前にデータを格納します。バックエンドとしてDjango Restフレームワークを使用しています。は私の問題は、以下の通りです管理者

従業員は、データベースモデルの更新、削除、または追加を提案できる必要があります。私のスキーマには、first_name、last_name、phone_numberなどのフィールドを持つ「担当者」モデル、street_name、street_num、cityなどのフィールドを持つ「GPSアドレスモデル」と、事実上すべての他のモデルが関係する「配送停止」モデル。

私が実装する必要があるのは、従業員がFKを持つContact(id:45、first_name: 'John'、phone_number: "435-0000" (id:20、タイトル: "Stop and Shop"、注: "0600で終了")。従業員は電話番号を「435-0001」に更新します。しかし、マネージャが更新をレビューし承認したり、承認された更新を編集したりするまで、更新はデータベースにコミットされるべきではありません。

私はこれをどうやってやるかもしれないかについていくつかのアイディアを持っていますが、どれもそれほど簡単ではないと思います。この状況でベストプラクティスに関する提案はありますか?

アプリケーションには、推奨されるすべての更新/編集と承認/拒否を行うことができる特別なマネージャインターフェイスも含まれます。クライアント側は基本的に配信停止をプライマリオブジェクトとして機能し、タブ付きインターフェイス(連絡先、Gpsアドレスなど)に関連するすべての項目を表示します。また、従業員によって編集が提案されるたびに、適切なマネージャに電子メールが送信されますお知らせ。

ご意見をいただければ幸いです。

+0

なぜdownvoteですか? – Murcielago

答えて

2

これは私のプロジェクトだったら、私は、同じデータベース・テーブルへのすべての変更を保存したいが、私は真として「WaitingForApproval」というフィールドをマークしたいです。次に、管理者用のページを作成して承認待ちのすべてのアイテムを表示し、承認または拒否することができます。拒否された場合には

、あなたはそのレコードを削除したり、真として「削除済み」というフィールドをマークし、レコードが誰かなければ特に削除されたレコードを見たいという、これまで表示されないようにしてくださいすることができます。あなたは、データベースからデータを引き出す

いつでも、あなたは(それは管理者の承認ページのために特別でない限り、通常はfalse)WaitingForApprovalが真か偽であることに基づいてフィルタリングすることをお勧めします。こうすることで、アプリケーションの残りの部分を混乱させることなく、同じテーブルに保留中の変更を保つことができます。

それともあなたはすでにあなたが変更したくないアプリで書かれたクエリの多くを持っている場合、あなただけ異なるが、同一のデータベース・テーブルにこれらの保留中の変更を保存することができます。管理者が承認すると、バックエンドコードはPendingChangesテーブルのデータをMainテーブルにコピーします。

+0

あなたのアドバイスをいただきありがとうございます。 – Murcielago

関連する問題