1

In my django project I am using django filters and pagination. When I click the next link to go to the next page, I lose my state. i have tried some ideas from here but nothing has done the trick yet. Any ideas on why this happens?

html

<div class="col-xs-4  clearfix text-center">
            {% if relations.has_next %}
            <div class="pull-right">
                <a href="?page={{ relations.next_page_number }}{% if createdBy %}&createdBy={{ createdBy }}{% endif %}{% if project %}&project={{ project }}{% endif %}{% if createdBefore %}&createdBefore={{ createdBefore }}{% endif %}}">Next &raquo;</a>
            </div>
            {% endif %}
        </div>

View

def relations(request):
    from annotations.filters import RelationSetFilter

    qs = RelationSet.objects.all()
    filtered = RelationSetFilter(request.GET, queryset=qs)
    qs = filtered.qs
    for r in qs:
        print r.__dict__

    paginator = Paginator(qs, 20)
    page = request.GET.get('page')



    try:
        relations = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        relations = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        relations = paginator.page(paginator.num_pages)

    context = {
        'paginator': paginator,
        'relations': relations,
        'params': request.GET.urlencode(),
        'filter': filtered,
    return render(request, 'annotations/relations.html', context)

Urls

Url when filters are applied:

/relations/?createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1

Url when I switch page:

/relations/?page=2
Taylor
  • 1,223
  • 1
  • 15
  • 30

1 Answers1

0

You are not passing your parameters (ex. createdBy ) in context so they are always null in HTML

iklinac
  • 14,944
  • 4
  • 28
  • 30
  • Isn't that bad practice since my data is coming from a get request and none of the data is validated. – Taylor Sep 11 '17 at 22:31