fox_12
@fox_12
Расставляю биты, управляю заряженными частицами

Проблема с django-guardian?

В моем проекте используется пообъектные права доступа.
Для этого я использую django-guardian
Все хорошо, но не работает функция get_objects_for_user()
qs - какой-то queryset
my_usr - какой-то пользователь
In [1]: qs
Out[1]: [<SomeModel: obj1>, <SomeModel: obj2>] 

In [2]: my_usr.has_perm('somename.change_somemodel', qs[0])
Out[2]: True

In [3]: my_usr.has_perm('somename.change_somemodel', qs[1])
Out[3]: False

Тут все вроде логично. В админке я назначил права change_somemodel только первому объекту
In [4]: get_objects_for_user(my_usr, 'somename.change_somemodel', qs)
Out[4]: [<SomeModel: obj1>, <SomeModel: obj2>]


Почему он выводит оба объекта? Ведь на второй у него нет прав????

З.Ы. Такой костыль отрабатывает как положено, но требует доп. расходов по производительности):
In [5]: [x for x in qs if my_usr.has_perm('somename.change_somemodel', x)]
Out[5]: [<SomeModel: obj1>]

Хотелось бы такого же поведения для штатной функции get_objects_for_user
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы