Verification of who you are based on credentials such as username and password
Verification of what you can access or do based on permissions
Use for anything you don't want seen or done by everyone
Superuser vs Staff user with Permissions
Groups are your friends
| View | Add | Change | Delete | Publish | |
|---|---|---|---|---|---|
| Visitor | Published | ✘ | ✘ | ✘ | ✘ |
| Author | ✔︎ | ✔︎ | Own | Own | ✘ |
| Publisher | ✔︎ | ✘ | ✘ | ✘ | ✔︎ |
| is_staff | ✔︎ | N/A | N/A | N/A | N/A |
Outgrowing the Django Admin
Handling object permissions
Django’s permission framework has a foundation for object permissions, though there is no implementation for it in the core. That means that checking for object permissions will always return False or an empty list (depending on the check performed). An authentication backend will receive the keyword parameters obj and user_obj for each object related authorization method and can return the object level permission as appropriate.
https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#handling-object-permissions
And moving out of the Django Admin
https://slides.com/keithbussell/django-perms
https://github.com/kbussell/django-permissions-talk