使用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 %}