Прикрепление дополнительных данных к объекту запроса Django Rest (DRF) только при входе пользователя в систему

У меня есть модель Branch, которая содержит все филиалы, в которые может входить пользователь. Другая модель UserBranchRelation, которая содержит связь пользователя с конкретной ветвью.

<<<Каждый пользователь имеет

конкретную роль внутри конкретной ветви . Пользователи-администраторы имеют больше прав по сравнению с простыми членами.

Более того, пользователь может быть администратором в одной ветке и членом в другой.

Я пытаюсь придумать изящное решение, которое позволило бы мне прикрепить ветвь и роль пользователя к объекту request при login. Теперь при получении аутентифицированного запроса мне не нужно будет повторно извлекать ветку, так как она уже будет присоединена к объекту запроса при успешном входе.

Внутри моих представлений я бы использовал разрешения для возврата данных на основе филиала пользователя и ограничивал доступ на основе роли.

Вот мои модели.

# Branch Model
class Branch(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    name = models.CharField(max_length=255)

# User and Branch relationship
class UserBranchRelation(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    branch = models.ForeignKey(Branch, on_delete=models.CASCADE)
    role = models.CharField(
        max_length=20, choices=RoleChoices.choices, default=RoleChoices.MEMBER
    )

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