DJango, предыдущее или следующее сообщение в соответствии со списком категорий.

Я изучаю разработку сайта блога, используя класс общих представлений DJango.

Я распределил блоги по категориям.

Если вы выбираете блог из полного списка и переходите на страницу подробностей, реализована возможность перехода к предыдущей и следующей записи с помощью "previous()" и "next()" в этой записи.

Я хочу выбрать блог из списка категорий и переместить его в предыдущий или следующий пост в соответствии с этим списком категорий, но я не знаю как.

Что я могу сделать?

models.py

class Post(models.Model):

..........

def prev(self):
    return self.get_previous_by_created_at()

def next(self):
    return self.get_next_by_created_at()

views.py

class PostListByCategory(PostList): def get_queryset(self): slug = self.kwargs['slug']. if slug == 'no_category': category = None else: category = Category.objects.get(slug=slug) return Post.objects.filter(category=category).order_by('-pk')

def get_context_data(self, **kwargs):
    context = super(PostListByCategory, self).get_context_data()

    slug = self.kwargs['slug']
    if slug == 'no_category':
        category = 'None'
    else:
        category = Category.objects.get(slug=slug)
    context['category'] = category
    return context

post_detail.html

..............

<div class="row row-cols-auto">
    {% if object.next %}
        <div class="col">
            <a href="{% url 'tube_detail' object.next.pk %}" class="btn btn-sm pt-1 pb-1 bg-light" title="Prev">
                <i class="bi bi-caret-left-fill" style="color:#dd3535"></i>
            </a>
        </div>
    {% endif %}
    
        <div class="col">
            <a href="{% url 'tube_list' %}{% if request.GET.category %}category/{{ request.GET.category}}{% endif %}" class="btn btn-sm pt-1 pb-1 bg-light"  title="LIST">  
                <i class="bi bi-list" style="color:#dd3535"></i>  
            </a>
        </div>

    {% if object.prev %}
        <div class="col">
            <a href="{% url 'tube_detail' object.prev.pk %}"  class="btn btn-sm pt-1 pb-1 bg-light" title="Next">
                <i class="bi bi-caret-right-fill" style="color:#dd3535"></i>
            </a>
        </div>
    {% endif %}
</div>  

''''''''''''

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