AND

managers.py

from django.db.models import Q    #operador "OR" y "AND"
class AutorManager(models.Manager):
    """ managers para el modelo autor"""

    def buscar_autor2(self,kword):
        resultado = self.filter(
            Q(nombre__icontains=kword) & Q(apellidos__icontains=kword)
        )
        return resultado

views.py

class ListarAutores(ListView):
    
    context_object_name='lista_autores'
    template_name='autor/lista.html'

    def get_queryset(self):
        palabra_clave=self.request.GET.get('kword','')
        return  Autor.objects.buscar_autor2(palabra_clave)

urls.py

    path(
        'autores',
        views.ListarAutores.as_view(),
        name="autores"
    ),

templates/autor/lista.html

para poder funcionar necesitarias una vista html donde se puedan ingresar dos parametros diferentes


NOT

 

managers.py

from django.db.models import Q
class AutorManager(models.Manager):
    """ managers para el modelo autor"""

    def buscar_autor2(self,kword):
        resultado = self.filter(
            Q(nombre__icontains=kword) & ~Q(apellidos__icontains=kword) #operador "AND" y "NOT"
        )
        return resultado

views.py

class ListarAutores(ListView):
    
    context_object_name='lista_autores'
    template_name='autor/lista.html'

    def get_queryset(self):
        palabra_clave=self.request.GET.get('kword','')
        return  Autor.objects.buscar_autor2(palabra_clave)

urls.py

    path(
        'autores',
        views.ListarAutores.as_view(),
        name="autores"
    ),

templates/autor/lista.html

para poder funcionar necesitarias una vista html donde se puedan ingresar dos parametros diferentes