Задать вопрос
@BashAnka
Начинающий специалист

Как разганичить доступ к записям, crud только своих записей пользователя?

Смысл в том, что нужно использовать одну модель всем авторизованным пользователям. Они могут создавать объекты-записи, но читать. удалять и менять могут только те, которые принадлежат ему, то есть им созданны. Django 2.*

Права доступа хотелось бы задавать на уровне модели, так как фильтрация в представлении не подходит. Планируется большое количество представлений. для каждого писать фильтр неудобно
  • Вопрос задан
  • 71 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@deliro
Пытаешься QuerySet'ом получить объект(s), но чтобы создатель (поле модели) был равен request.user. То есть, вместо Model.objects.get(id=1234) пишешь Model.objects.get(id=1234, user=request.user). А вместо Model.objects.filter(some_field="some value") пишешь Model.objects.filter(some_field="some value", user=request.user). Ну, при условии, что у Model действительно есть поле user и оно заполняется правильно.

Можно это унифицировать миксином для вьюх — переопределением метода get_queryset, если используются CBV
Ответ написан
Планируется большое количество представлений. для каждого писать фильтр неудобно


Почему не использовать каскомный manager?
Ответ написан
Комментировать
Самый лучший вариант для вас django-rules. И как сказали выше, queryset с фильтром по user, если вы используете CBV, то вам нужно написать миксин с перезагрузкой метода get_queryset. Если Вы пишите представления функции, то предлагаю вам отказаться от них в пользу CBV.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы