Todo lo relacionado a permisos, roles, grupos, etc... es todo un arte. No importa si estas en Django o desarrollando cualquier otra aplicación.
Django tiene un sistema de autenticación, con permisos y grupos a nivel modelo y solo bajo ciertas operaciones y claro que esto te puede ayudar en muchos escenarios. Sin embargo existen un montón de casos donde esto no te va a ayudar, por ejemplo a nivel instancia o incluso a nivel campo. O al mostrar información. Ademas debes de definir que acciones vas a tomar cuando te encuentres que algún usuario no tiene suficiente permisos para realizar cierta acción.
https://docs.djangoproject.com/en/de...-authorization
También depende mucho de donde lo estés implementando, app admin? vista genérica? CBV, FBV?
No hay forma canónica de hacer esto, depende mucho de que es lo quieras.