【问题标题】:How to limit the number of items displayed in Django app如何限制 Django 应用程序中显示的项目数量
【发布时间】:2019-03-28 14:07:38
【问题描述】:

我的报纸应用中有这个 Django 模型:

class Article(models.Model):
    title = models.CharField(max_length=255)
    body = models.TextField()
    date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(
        get_user_model(),
        on_delete=models.CASCADE,
    )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('article_detail', args=[str(self.id)])

它目前显示所有文章,但我想将显示的内容限制为 3 篇最新文章。这是怎么做到的?

这是我的看法:

class ArticleListView(LoginRequiredMixin, ListView):
    model = Article
    template_name = 'article_list.html'
    login_url = 'login'

这是html模板:

{% extends 'base.html' %}

{% block title %}Articles{% endblock title %}

{% block content %}
  {% for article in object_list %}
    <div class="card">
      <div class="card-header">
        <span class="font-weight-bold">{{ article.title }}</span> &middot;
        <span class="text-muted">by {{ article.author }} | {{ article.date }}</span>
      </div>
      <div class="card-body">
        <p>{{ article.body }}</p>
        <a href="{% url 'article_edit' article.pk %}">Edit</a>
        <a href="{% url 'article_delete' article.pk %}">Delete</a>
      </div>
      <div class="card-footer">
        {% for comment in article.comments.all %}
          <p>
            <span class="font-weight-bold">{{ comment.author }} &middot;</span>
            {{ comment }}
          </p>
        {% endfor %}
      </div>
    </div>
<br />
  {% endfor %} 
{% endblock content %}

【问题讨论】:

  • 什么显示所有文章?我们至少需要查看您的视图功能。
  • 显示处理该模型查询的视图
  • 道歉。我是 Django 新手,所以不确定我需要包含什么。现在添加了视图和html。
  • @JackMoody 不,这个问题与 ansible 无关
  • @JackMoody 在 django 的上下文中,它根本没有误导。虽然 django 使用 jinja2(或它的一些变体),但它不处理 jinja 元素的限制

标签: python django django-models


【解决方案1】:

在您的(假设的)ListView 中,您应该定义 queryset,类似于

class ArticleListView(LoginRequiredMixin, ListView):
        model = Article
        template_name = 'article_list.html'
        login_url = 'login'
        queryset = Article.objects.order_by('-date')[:3]

More on this here.

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多