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

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

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

Права доступа хотелось бы задавать на уровне модели, так как фильтрация в представлении не подходит. Планируется большое количество представлений. для каждого писать фильтр неудобно
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Разработка на Python
    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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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