Вам определенно следует использовать систему аутентификации Django, она по-прежнему выполняет 90% от того, что вам нужно.
Я построил то, что выглядит точно так же, как ваш сценарий, в одном проекте: корпоративные учетные записи, каждая с правами администратора и несколькимиобычные пользователи.
Вот модель структуры, которую я использовал:
class Account(models.Model): # represents copporate customer
admin = models.ForeignKey(User)
# other fields ...
class UserProfile(models.Model):
user = models.ForeignKey(User)
account = models.ForeignKey(Account)
И некоторые примеры применения требований авторизации на уровне представления с помощью пользовательских декораторов:
@account_access_required # request.user.get_profile().account == account
def account_page(request, account_id):
# ...
@account_admin_required # request.user == account.admin
def account_users(request, account_id):
# ...
Мы фактически использовалисубдомены для учетных записей, поэтому нет необходимости в явном параметре account_id
.
Весьма разумно использовать пользовательский интерфейс для администраторов учетных записей.Интерфейс администратора Django предназначен только для 100% доверенных пользователей, таких как системные администраторы и персонал внутренней поддержки.