Пагинация вызывает дублирование элементов в Django

У меня есть следующее ListView:

class SentencesListView(ListView):
    model = Sentence
    paginate_by = 10

    def get_queryset(self):
        return Sentence.objects.all().order_by('-proficiency')

Когда пользователь взаимодействует с веб-страницей, proficiency всех Sentence на отображаемой странице увеличивается. В результате, когда get_queryset будет вызван снова (когда пользователь посетит следующую страницу), он увидит те же предложения, что и на предыдущей странице.

Как я могу предотвратить это?

Я пробовал следующее, но ничего не вышло:

class SentencesListView(ListView):
    model = Sentence
    paginate_by = 10

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.cached_query_set = None

    def get_queryset(self):
        if not self.request.GET.get('page') or not self.cached_query_set:
            self.cached_query_set = Sentence.objects.all().order_by('-proficiency')
        return self.cached_query_set

self.cached_query_set никогда не является не None, когда тест выполняется внутри get_queryset. Следовательно, набор запросов всегда вычисляется заново при переходе к следующей странице.

Есть ли способ предотвратить появление дубликатов у пользователей? Или, есть ли способ предотвратить вызов get_queryset при переходе на следующую страницу?

Вернуться на верх