Документация django неоднозначность разрешения пользователя на уровне объекта
Я только начинаю осваивать разрешение пользователя в django и пытаюсь:
- Create specific permissions for different models I have.
- Assign to some permissions to some users for only some instances of a specific model.
По сути, user_a
может иметь permission_a
и permission_b
на project_one
, но только permission_a
на project_two
.
Просматривая документацию, я понял, что могу определить пользовательское разрешение на модель, добавив в класс следующую Meta:
class JobProject(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
....
class Meta:
permissions = [
("permission_a", "This is perm a"),
("permission_b", "This is perm b"),
]
Однако теперь я не уверен, что понимаю, как я могу добавить permission_a
к user_a
только для определенного экземпляра project_a
класса JobProject.
Документация Django действительно неоднозначна в этом вопросе.
С одной стороны, здесь говорится, что я могу использовать метод has_perm(perm, obj=None)
для проверки, есть ли у пользователя определенный perm
на определенном obj
.
С другой стороны, нет подсказки о том, как я могу указать, для какого конкретного объекта я хочу добавить разрешение, когда я запускаю user_a.user_permissions.add(permission_a)
Есть идеи? Я видел, что django-guardian
может быть ценной альтернативой, но я надеялся, что мне не придется устанавливать еще один пакет в мое приложение.