Документация django неоднозначность разрешения пользователя на уровне объекта

Я только начинаю осваивать разрешение пользователя в django и пытаюсь:

  1. Create specific permissions for different models I have.
  2. 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.

enter image description here

С другой стороны, нет подсказки о том, как я могу указать, для какого конкретного объекта я хочу добавить разрешение, когда я запускаю user_a.user_permissions.add(permission_a)

Есть идеи? Я видел, что django-guardian может быть ценной альтернативой, но я надеялся, что мне не придется устанавливать еще один пакет в мое приложение.

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