Django pagination duplicate posts
Здравствуйте у меня странная ошибка pagnation works fine on my home.html but in my categories.html it duplicate post as soon as it paginates how can i fix this. Вот код к файлам, в которых возникает проблема.
проблема должна быть из def CategoryView.
я пытался изменить order_by id и некоторые мелочи в категориях, но не могу понять, почему пост дублируется на pagnation.
views.py
categories.html
{% extends 'base.html' %}
{% block content %}
<h1 class="headerh1">{{ cats }}</h1>
<div class="container">
<div class="row">
<!-- Blog Entries Column -->
<div class="col-md-8 mt-3 left">
{% for post in cat_menu_list %}
<div class="card mb-4">
<div class="card-body">
<h2 class="card-title"><a href="{% url 'article-detail' post.pk %}" class="text-dark">{{post.title }}</a></h2>
<p class="card-text text-dark h6">{{ post.author.first_name }} {{post.author.last_name }} | {{ post.post_date }}
<a href="{% url 'category' post.category|slugify %}">{{ post.category }}</a></p>
{% if post.header_image %}
<img id="uploadimg" src="{{ post.header_image.url }}">
{% endif %}
<div class="card-text">{{ post.body|safe|slice:":200" }}</div>
<a href="{% url 'article-detail' post.pk %}" class="btn btn-info">Read More</a>
{% if user.is_authenticated %}
{% if user.id == post.author.id %}
<a href="{% url 'update_post' post.pk %}" class="btn btn-primary">Edit</a>
<a href="{% url 'delete_post' post.pk %}" class="btn btn-danger">Delete</a>
{% endif %}
{% endif %}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
<div class="pagination">
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li><a href="?page={{ page_obj.previous_page_number }}" class="page-link">« PREV </a></li>
{% endif %}
{% if page_obj.has_next %}
<li><a href="?page={{ page_obj.next_page_number }}" class="page-link"> NEXT »</a></li>
{% endif %}
</ul>
</nav>
</div>
{% endblock %}
Я не могу посмотреть ваш models.py, но возможно проблема в том, что category
является полем ManyToMany для Post
. Поэтому вы можете получить один и тот же пост дважды при фильтрации.
Попробуйте использовать distinct()
в вашем наборе запросов:
cat_menu_list = Post.objects.filter(
category=cats.replace(
'-', ' ')).order_by('-id').distinct()