必然的にユーザー自身が管理する複雑な権限構造を持つアプリを開始しています。モデルには次の権限があります。
class Meta:
permissions = (
('can_view', 'View project'),
('manage_view', 'Can assign View project'),
('can_edit', 'Edit project'),
('manage_edit', 'Can assign Edit project'),
('can_delete', 'Delete project'),
('manage_delete', 'Can assign Delete project'),
('creator', 'Full access to model features.'),
)
これらは Django-guardian を使用してオブジェクト レベルで管理され、さまざまな組み合わせと機能のすべてに対処するためにカスタム ミックスインを使用しています。
「作成者」権限はオブジェクトの最初の作成者に割り当てられ、電子メール ベースの招待システムを介して他の権限をユーザーに割り当てることができます。
私の質問は、オブジェクトの作成時に作成者のアクセス許可を割り当てるためのオプションに関するものです。
これまでに私が考えたいくつかのアプローチ:
保存後にビューに割り当てる
newObject.save()
assign('creator', User, newObject)
ただし、一般的に、私はこれらのタイプのイベントを自分のビューから除外することを好みます。
save() をオーバーライドする
この方法の問題点は、ユーザー オブジェクトへの保存アクセス権を付与する必要があることです。これは、initをオーバーライドして、self.request = request を設定することも意味します。
post_save シグナル
このシグナルを利用できることはわかっていますが、前の 2 つと比較して、まだ実装を試みていません。
うまくいけば、これで私がどこにいるのかについて十分な洞察が得られます。
これらの方法の中で何が最善であるか、またはそれらがすべて悪い考えである場合は、代替の実装が何であるかを知りたいです.
ありがとう、
JD