Есть два типа моделей, User
и Object
.
Каждый User
может иметь различный уровень владения Object
, который будет иметь различные разрешения при доступе к конечным точкам DRF (ownership=ManyToManyField(Object, through='UserObject')
).
например, User
с ownership.permission='Owner'
для Object
будет иметь разрешения CRUD, в то время как User
с ownership.permission='Manager'
будет иметь только разрешения RU, в то время как User
без владельца будет иметь только C permissions.
В настоящее время я храню отношения с двумя таблицами OwnershipLevel
с M2M до Permissions
, в которых указывается, какое из разрешений CRUD имеет роль, но каждая транзакция API является тяжелой БД, которую я должен получить пользовательские разрешения в начале.
Ищите способ уменьшить нагрузку на БД, если это возможно, путем кэширования разрешений роли для загрузки или чего-то еще.
Спасибо!