Я работаю над django-приложением для корпоративного решения. В настоящее время пользователи могут классифицировать данные на сайте в частные коллекции, видимые только для себя. Функциональный запрос для менеджеров, чтобы иметь возможность просматривать частные коллекции своих подчиненных.
Моя проблема в том, что является лучшим решением для реализации этой иерархии? Я подумал о нескольких решениях:
- Внешний ключ от пользователя к пользователю с именем manager. Создайте тест @user_passes_test, который будет проходить через отношение менеджера, глядя на владельца коллекции, пока а) запрашивающий пользователь не окажется менеджером, или б) менеджер не имеет значение Null, указывая, что запрашивающий пользователь не авторизован для доступа к этой странице. .
- Преимущества: простая иерархия точно представлена с минимальными данными
- Недостатки: большая иерархия приводит ко многим запросам
- Создание связи «многие ко многим» между пользователями и пользователями, называемыми менеджерами. Создайте все отношения в этой таблице.
- Преимущества: необходим только один запрос, и пользователи могут иметь несколько менеджеров.
- Недостатки: трудно изменить иерархию, когда кто-то уходит.
Я открыт для любых других предложений, которые есть у людей.