【问题标题】:Only show the latest 3 posts in Django?只显示 Django 中的最新 3 个帖子?
【发布时间】:2014-07-18 16:40:24
【问题描述】:

我在 Django 中有一个博客应用程序。我想在另一个页面上显示最新的 3 篇博文,但只能显示按日期排序的所有博文。

如何显示最新的 3 个帖子?

我是在视图中还是在模板标签中过滤它?

models.py

​​>
from django.db import models
from django.core.urlresolvers import reverse

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(unique=True, max_length=255, null=True)
    pub_date = models.DateTimeField()
    excerpt = models.TextField(null=True)
    text = models.TextField()
    header_image = models.FileField(upload_to='blog/%Y/%m/%d', null=True, blank=True)
    post_color = models.CharField(max_length=20, null=True)
    tags = models.CharField(max_length=80, blank=True)
    published = models.BooleanField(default=True)

    def __unicode__(self):
        return u'%s' % self.title

    def get_absolute_url(self):
        return reverse('blog.views.post', args=[self.slug])

views.py

​​>
from django.shortcuts import render, get_object_or_404
from blog.models import Post

def about(request):
        # get the blog posts that are published
        posts = Post.objects.filter(published=True).order_by('-pub_date')
        # now return the rendered template
        return render(request, 'blog/about.html', {'post': posts})

关于.html

{% for post in post %}
        <section class="post">
                <h3><a class="post-title"
                    href="{{post.get_absolute_url}}">
                    {{ post.title }}
                </a></h3>
                <span class="post-meta">
                    {{ post.pub_date | date:"d F Y" }}
                </span>
                <p class="post-excerpt">
                    {{ post.excerpt }}
                </p>
        </section>
{% endfor %}

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    尝试获取前 3 个元素的子数组。它应该可以工作。

    posts = Post.objects.filter(published=True).order_by('-pub_date')[:3]
    

    【讨论】:

      【解决方案2】:

      试试这个,

      posts = Post.objects.filter(published=True).order_by('-pub_date')[0:3]
      

      【讨论】:

      • 我确定我昨晚试过了,哦,好吧,我一定是真的累了,做了一些愚蠢的事情!谢谢!
      • 别担心,stackoverflow 总能帮到你。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 2021-11-15
      • 2020-07-27
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多