使用python为帖子数量添加最大限制

我需要限制 Django 查询中的帖子数量。我试图添加一个最小值和最大值,但似乎没有任何效果。我已将 home.html 添加到代码中。

示例:我的博客中应该只有 15 篇最新的帖子。其余的可以通过单击类别按钮来查看。

主页.html:

{% extends 'base.html' %}

{% block content %}




<h1>Posts</h1>

<ul>
{% for post in object_list %}

    <li><a href="{% url 'article-detail' post.pk %}">{{post.title}}</a> 
<style>
    a {
        text-transform: capitalize;
    }
</style>
        - <a href="{% url 'category' post.category %}">{{ post.category }}</a> - <a href="{% url 'show_profile_page' post.author.profile.id %}">{{ post.author.first_name }} 
    {{ post.author.last_name }}</a> - {{ post.post_date }} <small>

        {% if user.is_authenticated %}
            {% if user.id == post.author.id %}

            - <a href="{% url 'update_post' post.pk %}">(Edit)</a>

            <a href="{% url 'delete_post' post.pk %}">(Delete)</a>
            {% elif user.id == 1 %}

            - <a href="{% url 'update_post' post.pk %}">(Edit)</a>

            <a href="{% url 'delete_post' post.pk %}">(Delete)</a>

            {% endif %}

        {% endif %}


    </small><br/>
    {{ post.snippet }}</li>
{% endfor %}
</ul>


{% endblock %}

view.py:

class HomeView(ListView):
    model = Post
    template_name = 'home.html'
    ordering = ['-id']

    def get_context_data(self, *args, **kwargs):
            cat_menu = Category.objects.all()
            context = super(HomeView, self).get_context_data(*args,**kwargs)
            context["cat_menu"] = cat_menu
            return context

模型.py:

class Post(models.Model):
    title = models.CharField(max_length=255)
    header_image = models.ImageField(null=True, blank=True, upload_to='images/')
    title_tag = models.CharField(max_length=255)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = RichTextField(blank=True, null=True)
    post_date = models.DateField(auto_now_add=True)
    category = models.CharField(max_length=255, default='intro')
    snippet = models.CharField(max_length=255)
    likes = models.ManyToManyField(User, related_name='post_likes')
    dislikes = models.ManyToManyField(User, related_name='post_dislikes')

回答

我认为当您单击类别按钮时,您有另一个用于显示分类对象的模板。如你所说

“我的博客中应该只有 15 篇最新的帖子。其余的可以通过单击类别按钮查看。”

在这种情况下,您可以使用简单的 hack 来显示表格中的最新帖子。以降序查询所有对象views

    all_objs = Post.objects.all().order_by('-id')

然后用于 {% if forloop.counter <= 15 %} 仅显示最后 15 个项目。如下。

模板

{% for post in object_list %}

   {% if forloop.counter <= 15 %}

       <h4>{{obj}} #or anything really that is meant to be shown on the home page.</h4>

   {% endif %}

{% endfor %}


以上是使用python为帖子数量添加最大限制的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>