Sobrescribir metodo get_queryset django

Cuando usamos las vistas basadas en clase donde consumimos data de una db normalmente tenemos un atributo llamado queryset por ejemplo:

Cuando usamos las vistas basadas en clase donde consumimos data de una db normalmente tenemos un atributo llamado queryset por ejemplo:from django.views import genericclass UsersListView(generic.ListView):
"""
Vista para listar usuarios
"""

model = Publicacion
template_name = 'users/users_list.html'
context_object_name = 'users'
paginate_by = 20
queryset = Users.objects.filter(is_superuser=False)

En esta vista obtenemos los usuarios que no sean supe users , pero si queremos mostrar esa información a otro tipo de perfil en nuestra app lo que tendríamos que hacer es otra vista con un queryset diferente, esto no va con la filosofía DRY (Dont Repeat Yourself) de Django , una mejor solución seria poder modificar nuestro queryser según el perfil de nuestro usuario , esto lo hacemos sobreescribiendo el metodo get_queryset como lo muestro a continuación.from django.views import generic
class UsersListView(generic.ListView):
"""
Vista para listar usuarios
"""
model = Publicacion
template_name = 'users/users_list.html'
context_object_name = 'users'
paginate_by = 20
queryset = User.objects.filter(is_superuser=False)

def get_queryset(self):

if self.request.user.is_superuser:
return User.objects.all()
else:
return User.objects.filter(is_superuser=False)