403 Forbidden при использовании PermissionRequiredMixin в Django
Я пытаюсь ограничить доступ к представлению 'GovernmentView' пользователям, чья учетная запись имеет True для поля 'is_government', реализуя аргумент PermissionRequiredMixin.
Но это не работает. Зарегистрированные пользователи, имеющие True для поля 'is_government', получают ошибку 403 Forbidden (а суперпользователи, имеющие False для этого поля, не видят ошибки и могут получить доступ к шаблону).
Как я могу исправить эту ошибку и ограничить доступ, как указано выше? Спасибо.
settings.py:
LOGIN_URL = reverse_lazy('users:login')
LOGIN_REDIRECT_URL = 'users:home'
urls.py:
app_name = 'users'
urlpatterns = [
path('', views.login_view, name='login'),
path('logout/', views.logout_view, name='logout'),
path('register/', views.register_view, name='register'),
path('activate-user//', views.activate_user, name='activate'),
path('home/', views.home, name='home'), path('government/',
views.GovernmentView.as_view(), name='government'),
models.py:
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
is_active = models.BooleanField(default=True)
is_email_verified = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_government = models.BooleanField(default=False,
verbose_name="Gov't Official")
date_joined = models.DateTimeField(default=timezone.now)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = CustomUserManager()
def __str__(self):
return self.email
@staticmethod
def get_absolute_url(self):
return reverse("users:home")
views.py:
class GovernmentView(PermissionRequiredMixin, ListView):
permission_required = 'CustomUser.is_government'
template_name = 'users/government.html'
model = List
form_class = Form
def get_context_data(self, **kwargs):
context = super().get_context_data()
context["List"] = List.objects.all()
return context
government.html:
{% if request.user.is_government%}
<div class="nav">
<a id="government" {% block government %} class="selected" {%
endblock %} href="{% url 'users:government' %}"></a>
</div>
{% endif %}
<!-- government information in <body> not shown here-->