Как написать чистое разрешение в Django
Я никогда не имел дела с пользовательской системой разрешений, и у меня возникают трудности.
У меня есть этот get_queryset:
def get_queryset(self):
""" Get query set regarding the user's group.
If the group name is not xx then filter the result by dealer name
"""
user_groups = self.request.user.groups.all().values_list('name', flat=True)
if 'xx' not in user_groups:
dealer = MANUFACTER_CHOICE
dealer_name: str = [dealer_name[1] for dealer_name in dealer if dealer_name[1].lower() in user_groups][0]
return ShapeFile.objects.filter(system__dealer__name=dealer_name)
return ShapeFile.objects.all()
В основном, проверяется группа, в которой находится пользователь. Мои пользователи должны быть в группе.
Моя модель ShapeFile имеет внешний ключ к системе, которая имеет поле dealer. Дилер должен быть равен одному из названий моей группы.
Если пользователь находится в xx, он может видеть каждый ShapeFile на БД.
Если мне нужно проверить группу, в которой находится пользователь, и найти все шейпфайлы, принадлежащие системе, у которых имя дилера равно группе пользователя.
Я чувствую, что мне следует реализовать разрешение объектного уровня https://www.django-rest-framework.org/api-guide/permissions/#object-level-permissions. Но я не понимаю, как я могу его использовать.
Может ли кто-нибудь объяснить, какой хороший способ это сделать?
Спасибо