У меня есть следующая модель (упрощенно):
class Post(models.Model):
title = models.CharField(max_length=20)
date_created = models.DateTimeField(auto_now=True)
class Meta:
ordering = ('-date_created',) # note the "reverse" ordering here
, затем мой пользовательский DetailView на основе generic.DetailView
:
class PostDetailView(generic.DetailView):
queryset = Post.objects.all()
и, наконец, следующий шаблон:
{% with object.get_previous_by_date_created as prev %}
{% if prev %}
<a class="nav-link-prev"
href="{% url "blog:post_detail" pk=prev.id %}">Previous</a>
{% endif %}
{% endwith %}
{% with object.get_next_by_date_created as next %}
{% if next %}
<a class="nav-link-next"
href="{% url "blog:post_detail" pk=next.id %}">Next</a>
{% endif %}
{% endwith %}
Моя нумерация страниц, реализованная таким образом, работает, но из-за поля обратного упорядочения (т. Е. -date_created
) его метки «Предыдущая / Следующая» не на месте. Другими словами, мой шаблон выводит «Назад», где должно быть «Далее», и наоборот. Если я уберу знак -
в ordering = ('-date_created',)
, он будет работать нормально, но это не тот порядок, который я хотел бы иметь на своем веб-сайте.
Существует ли простой и идиоматический c способ исправить это? плохое поведение? Чего мне не хватает?