[Django3.0]groupとpermissionの構造

Tokyoというgroupをadminから追加します。
groupのcrudのpermissionを付けます。

mysql> select * from auth_group;
+—-+——-+
| id | name |
+—-+——-+
| 1 | tokyo |
+—-+——-+
1 row in set (0.00 sec)

mysql> select * from auth_group_permissions;
+—-+———-+—————+
| id | group_id | permission_id |
+—-+———-+—————+
| 1 | 1 | 9 |
| 2 | 1 | 10 |
| 3 | 1 | 11 |
| 4 | 1 | 12 |
+—-+———-+—————+
4 rows in set (0.00 sec)

ユーザに作成したgroupを紐づけます。

この時、このユーザはグループのpermissionと個別のpermissionが付いてます。
mysql> select * from auth_user_groups;
+—-+———+———-+
| id | user_id | group_id |
+—-+———+———-+
| 1 | 2 | 1 |
+—-+———+———-+
1 row in set (0.00 sec)

グループのpermissionと個別のpermissionに上下関係はなく、両方のpermissionが与えられている状態となります。

ER図で作成した通りですね。ER図を書くと理解のスピードがかなり上がります。

auth_userとgroup、permissionの関係性も理解しました。
さて、いよいよマイグレーションを実装していきましょうか。
ログイン機能は後から対応したいと思います。