1

Guardian権限などのアプリのデータを保持する別のローカルDBを使用して、一部のOracleデータベースへのWebフロントエンドであるDjangoアプリを開発しています。問題は、私が制御できないさまざまな場所から変更できることです。

、、の3つのモデルUserがあるThesisとしUserThesisます。

UserThesisThesis-との間の関係を指定するテーブルUserUserの共著者であるThesis

シナリオ:

  1. User他のアプリによってテーブルのThesisエントリを削除することにより、の作成者として削除されます。UserThesis

  2. UserThesisDjangoアプリを使用して変更しようとします。そして、GuardianとDjangoはの変更について知らないため、彼は成功しUserThesisます。

私はいくつかの解決策について考えました:

  1. UserThesisいくつかのcronジョブで、エントリの変更日を確認して変更を探します。追加や削除を簡単に確認するには、すべての関係をもう一度確認する必要があります。

  2. Oracle DBスキーマを変更してGuardianDBテーブルを追加し、UserThesisテーブルにトリガーを作成します。Oracle DBは多数の異なるアプリ間で共有されているため、これは行いたくありません。

  3. ビューとテンプレートの関係を手動でチェックします(Oracleの負荷が高くなります)。

どれが最高ですか?他のアイデアはありますか?

4

1 に答える 1

0

パーミッションを手動でチェックし、可能な限りキャッシュすることにしました。私はget_perms_from_cache(self、user)モデルメソッドに行き着きました。これは私を大いに助けてくれます。

于 2011-08-10T13:23:09.997 に答える