Аутентификация при наследовании модели по нескольким детям

Я хотел бы услышать мнения о том, как мне действовать, чтобы установить мои модели.

У меня есть сущность-отец, у которой есть два сына - простой человек и супермен. Оба могут аутентифицироваться, но simpleman не имеет доступа ко всем страницам и другие ограничения. Чтобы выделить simpleman, я подумал о добавлении метода, который возвращает true

Я хотел бы знать, должен ли я создать модель Father с ее атрибутами и первичным ключом (regNumber: CharField), а затем с этими дочерними элементами я помещу этот первичный ключ во внешний ключ?

В коде я думаю сделать следующее:

class Superman(AbstractBaseUser):
   #regNumber = models.CharField(..., primary_key=True)
   ... # other property 
   objects = customManagerSuper() # where user.is_admin=True and user.is_superuser=True

class Simpleman(AbstractBaseUser):
   #regNumber = models.CharField(..., primary_key=True)
   ... # other property 
   objects = customManagerSimple() # where user.is_admin=False and user.is_superuser=False
   
   def heIsSimple(self):
      return True

Как будет работать аутентификация? Как я могу заставить его искать в нужной таблице?

Чтобы ограничить доступ к определенной странице для простого человека, я подумал об установке такого украшения в моем views.py

@user_passes_test(lambda user: u.heIsSimple())

Я не думаю, что наследование здесь является правильным решением. Я предлагаю создать один класс с полем is_simple в виде boolean (только для двух типов) или user_type в виде "enum" (для более чем двух типов).

Вернуться на верх