1) 削除、更新などの権限を持つテーブルを作成する
2)権限テーブルに3方向ピボットテーブルを作成します。行レベルのアクセスが必要なテーブルと、アクセス権の単位(グループまたはユーザー)を含むテーブルです。
3) 操作を続行する前に、ピボット テーブルで関係を確認してください。
権利テーブルは次のようになります。
ID RIGHT
1 DELETE
2 UPDATE
行レベルのアクセス制御が必要なテーブルは次のようになります (ブログなど):
ID TITLE CONTENT
1 blog entry 1 This is a blog entry
2 blog entry 2 This is another blog entry
ユーザーテーブルは次のようになります。
ID NAME
1 Bob
2 Alice
次に、ピボットテーブルは次のようになります
ID USER_ID RIGHT_ID BLOG_ID
1 1 2 1
2 2 1 1
3 2 2 1
4 2 1 2
5 2 2 2
つまり、Bob はブログ エントリ 1 のみを更新できますが、Alice はいずれかのブログ エントリを更新または削除できます。
編集: ユーザーまたはグループから権限を取得する場合は、テーブルごとに 2 つのピボット テーブルが必要です。1 つはユーザー用、もう 1 つはグループ用です。また、操作を許可または禁止する前に、ユーザー レベルの権限とグループ レベルの権限を確認するために、データベースにクエリを実行する必要があります。
EDIT2: これは David のソリューションよりも複雑ですが、事前に permission_classes を構成する必要はありません: 必要なグループ レベルとユーザー レベルのアクセス許可を組み合わせて一致させることができます。