Я работаю над Django 1.5 Project.
Приложение содержит пользовательскую иерархию
Owner
Admin
Viewer
- Владелец владеет всемиданные в базе данных.
- Администраторы создаются владельцем и имеют разные учетные данные для входа.Можно добавлять / редактировать / удалять данные под владельцем.
- Пользователи средства просмотра создаются владельцем и имеют разные учетные данные для входа.Может просматривать данные, созданные под владельцем.
Пользователи * Модель 1019 * имеет поле is_shared
(булево) для идентификации основного пользователя и общего пользователя, и access_level
отображаетсяв другой модели MultiUser .
Я подумал реализовать это следующим образом:
- Обновить все наборы настроек и поставить отметку в
get_queryset
. - , где будет сделана первая проверка, если у пользователя есть
is_shared=True
- , затем зарегистрируйте модель MultiUser ,
- получите
user
от MultiUser , а затем фильтруйте записи от имени пользователя.
Но это потребует изменений во всех наборах приложений.
Есть ли способ сделать это без внесения изменений во все приложение.Может быть middleware
.
Редактировать 2: Многопользовательская модель
class MultiUser(models.Model):
user = models.ForeignKey(User, related_name='owner_user')
shared_user = models.ForeignKey(User, related_name='shared_user')
access_level = models.CharField(max_length=50)