Django 1.8 Paginator inside a def get

1

Pager within this function and I do not know how to do it and tried several ways but it does not work out here I leave the pager code, please help me

class ListarTipoAlmacen(ListView):
model = Tipo_almacen
template_name = 'tipo_almacen/lista_tipo_almacen.html'


   def get(self, request, *args, **kwargs):

       lista_tipo_almacen = Tipo_almacen.objects.all().order_by('descripcion')
       buscar_descripcion = ''

       paginator = Paginator(lista_tipo_almacen, 10)
       page = self.request.GET.get('page')

       try:
           npagina = paginator.page(page)
       except PageNotAnInteger:
           npagina = paginator.page(1)
       except EmptyPage:
           npagina = paginator.page(paginator.num_pages)


       if request.GET:

           buscar_descripcion = request.GET.get('buscar_descripcion', '')

           if buscar_descripcion == '':
               messages.info(request, 'Introduzca términos de búsqueda')
           else:
               lista_tipo_almacen = Tipo_almacen.objects.filter(descripcion__contains=buscar_descripcion).order_by('descripcion')


               if not lista_tipo_almacen:
                   messages.error(request, 'No se encontraron registros en la base de datos')


       return render(request, 'tipo_almacen/lista_tipo_almacen.html', {
        'lista_tipo_almacen': lista_tipo_almacen,
        'termino_busqueda': buscar_descripcion,
        'npagina': npagina
    })

my HTML code

 <ul class="pagination">
        {% if npagina.has_previous %}
            <li class="">
                <span><a href="?page={{ npagina.previous_page_number }}"> << </a></span>
            </li>
        {% endif %}


        {% for num in npagina.num_pages %}

                <li class="activate">
                    <span> <a href="?q={{ npagina }}&page={{ num }}"> {{ num }}</a> </span>
                </li>

        {% endfor %}


        {% if npagina.has_next %}
            <li>
                <span><a href="?page={{ npagina.next_page_number }}"> >> </a></span>
            </li>
        {% endif %}
    </ul>
    
asked by Andres Vilca 12.05.2016 в 17:59
source

1 answer

2

To add pagination to a ListView add this line:

paginate_by = 10

Now you could put your code inside the get_queryset method when you want to filter, like this:

class ListarTipoAlmacen(ListView):
    model = Tipo_almacen
    template_name = 'tipo_almacen/lista_tipo_almacen.html'
    paginate_by = 10


    def get_queryset(self, **kwargs):
        queryset = super(ListarTipoAlmacen, self).get_queryset(**kwargs)

        queryset = Tipo_almacen.objects.all()

        buscar_descripcion = self.request.GET.get('buscar_descripcion', '')

        if buscar_descripcion:
           queryset = Tipo_almacen.objects.filter(descripcion__contains=buscar_descripcion).order_by('descripcion')
        else:
            messages.info(request, 'Introduzca términos de búsqueda')

        if not queryset:
            messages.error(request, 'No se encontraron registros en la base de datos')

        return queryset
    
answered by 13.05.2016 в 01:43