Документация 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 может быть ценной альтернативой, но я надеялся, что мне не придется устанавливать еще один пакет в мое приложение.
