8
votes

I have this weird pagination bug in Django: using object_list as a return of a view, but passing a "paginate_by" argument to it, it's repeating some of the results; Otherwise, if I remove the argument or set as "paginate_by=None", the results are correct.

If using pagination, the quantity of results is maintained at a total, so, because there are repeated results, the last results are left out of the list, so they don't appear in the template.

Any ideas of what might be happening?

Thanks!

2
Important info: the number of repeated results is equal to the number of links between the related many-to-many objects. Might be the best clue to get to the error.diogobaeder

2 Answers

30
votes

I had this problem also, but found a solution.

The problem was that i sorted the dataset by date. When i had multiple records with the same date, pagination showed wrong records.

What i did was i added another searchfield, id, so that the sortcriteria was unique for every record. And then it worked!

Before:

self.filtered_nesgames = self.filtered_nesgames.order_by('releasedate')

After:

self.filtered_nesgames = self.filtered_nesgames.order_by('releasedate', 'id')

HTH

0
votes

Aparently there's an open issue about documenting how pagination works with django-filter.

Try following the advice given by the issue submitter, bartTC.