У меня есть две страницы, одну я хочу показывать только классу модели User, вторую только классу модели Partner. Как лучше это указать в моделях и во views? Если не сложно, напишите, что должно быть во Views. И как это будет выглядеть, если давать права не классу, а только определенному юзеру.
from django.contrib.auth.decorators import login_required, permission_required
from django.views.generic import TemplateView
from .views import VoteView
urlpatterns = [
path('vote/', permission_required('polls.can_vote')(VoteView.as_view())),
]
Вот пример с голосованием. Если у авторизованного пользователя есть пермишн на голосование (называется polls.can_vote), то он может голосовать, иначе - получает 403 ошибку. От самого VoteView никаких проверок разрешений не требуется, сразу голоса обновляет.
Я бы не стал делать две модели User и Partner, ограничился бы одной User. В Django достаточно хорошо продуман механизм назначения прав. Так вот создаёте группу Partners и назначает там права, партнёров добавляете в эту группу. Если вы используете CBV то есть специальный миксин, который добавляет атрибут и там можно указывать те права которым должен обладать пользователь.
Также вам будет полезен пакет django-rules.
Если есть вопросы или нужны ссылки на подробности, то пишите в комментариях.