Пагинация в Django ListView при использовании get_context_dataPython

Программы на Python
Ответить
Anonymous
 Пагинация в Django ListView при использовании get_context_data

Сообщение Anonymous »

В настоящее время я столкнулся с этой проблемой с Django ListView. По сути, мне нужно отфильтровать некоторые вопросы по каждой теме, и я хотел бы разбить результаты на страницы.
Мой код отлично работает в части набора запросов (результаты отображаются правильно), но я столкнулся с проблемой разбиения на страницы.
/>Предположим, у меня в запросе 8 элементов. Если я выберу paginate_by = 10, мне будет показана только одна страница. Если в противном случае я выберу нумерацию страниц, скажем, на 3, мне будет показано 3 страницы для выбора в шаблоне (что правильно), но при этом будут показаны ВСЕ результаты запроса на моей странице.
Я публикую немного кода для большей ясности
models.py:
class Tag(models.Model):
name = models.CharField(max_length=300, unique=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

def clean(self):
self.name = self.name.capitalize()

def __str__(self):
return self.name

class Question(models.Model):
post_owner = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=5000, default='')
body = tinymce_models.HTMLField()
tags = models.ManyToManyField(
Tag, related_name='tags')
viewers = models.ManyToManyField(
User, related_name='viewed_posts', blank=True)

views.py:
class TagQuestionsListView(ListView):
template_name = 'main/tag_questions.html'
paginate_by = 20

def get_queryset(self, **kwargs):
tag = Tag.objects.get(name=self.kwargs['name'])
questions = Question.objects.filter(tags=tag)
return questions

def get_contextdata(self, **kwargs):
context = super().get_context_data(**kwargs)
context['tag'] = Tag.objects.get(name=self.kwargs['name'])
context['questions'] = Question.objects.filter(
tags=context['tag'], is_deleted=False)
return context

шаблон:
{% extends 'base.html' %}
{% load humanize %}
{% block title %}Domande su {{tag.name}}{% endblock title %}
{% block content %}

.text {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; /* number of lines to show */
line-clamp: 2;
-webkit-box-orient: vertical;
}



Ultime {{ questions.count }} Domande
{% if request.user.is_authenticated %}
Fai una domanda
{% else %}
Fai una domanda
{% endif %}

{{ total_questions.count }} domande totali

{% for question in questions %}


{{ question.count_all_the_votes }} Voti
{{ question.count_answers }} Risposte
{{ question.calculate_viewers }} Visualizzazioni

{{question.title}}

{{ question.body|striptags }}

{% for tag in question.tags.all %}
{{tag.name}}
{% endfor %}

Precedente
{% else %}
[*]Precedente
{% endif %}
{% for i in paginator.page_range %}
[*]{{i}}
{% endfor %}
{% if page_obj.has_next %}
[*]Prossima
{% else %}
[*]Prossima
{% endif %}
[/list]





{% endblock content %}


Подробнее здесь: https://stackoverflow.com/questions/731 ... ntext-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»