Как проверить тип пользователя после входа в систему? DJANGO

В моем приложении есть два типа пользователей. Как мне проверить тип пользователя после входа в систему? Мое представление входа расширяет LoginView от django. В моем представлении входа я пробовал использовать form_valid, но я думаю, что он делает проверку перед аутентификацией.

models.py

class CustomUser(AbstractUser):
    is_client = models.BooleanField(default=False)
    is_supermarket = models.BooleanField(default=False)

    def __str__(self):
        return self.username

views.py

class LoginView(LoginView):
    
    
    def get(self, request, *args, **kwargs):
    #check if the user is logged in and redirect to home page
        if request.user.is_authenticated:
            return redirect('produtos:home')
        return super(LoginView, self).get(request, *args, **kwargs)

Это то, что вам нужно?

class LoginView(LoginView):
    
    
    def get(self, request, *args, **kwargs):
    #check if the user is logged in and redirect to home page
        if request.user.is_authenticated:
            return redirect('produtos:home')
        if request.user.is_supermarket:
            return redirect('supermarket-login') #your unique login page for supermarket user
        return super(LoginView, self).get(request, *args, **kwargs)

Не знаю, лучший ли это подход, но я получаю ожидаемое поведение

class LoginView(LoginView):
        
    def get(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            return redirect('produtos:home')
        return super(LoginView, self).get(request, *args, **kwargs)
    
    def form_valid(self, form):
        if form.get_user().is_supermarket:
            self.request.session.flush()
            logout(self.request)
            return redirect('login')
        return super().form_valid(form)
Вернуться на верх