Django博客 - 通过多对多调用每个类别的最新3个帖子

时间:2017-11-15 18:26:08

标签: python django django-views

到目前为止,我的博客项目已经:

  

Models.py

 class Category(models.Model):
        title = models.CharField(max_length=200)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = "categories"


class Post(models.Model):
        title = models.CharField(max_length=200)
        summary = models.CharField(max_length=500, default = True)
        body = models.TextField()
        pub_date = models.DateTimeField(default=timezone.now)
        categories = models.ForeignKey('Category', default=True)


        def __str__(self):
            return self.title
  

浏览

from django.shortcuts import render
from .models import Post, Category

def getAllCategories(request):
    categories = Category.objects.all()

    context = {
        'categories':categories,
            }

    return render(request, 'categories/getAllCategories.html', context)
  

模板

 {% extends "../posts/base.html" %}

{% block content %}
    <div>
        {% for category in categories %}
            <div>
                <h3>{{ category.title }}</h3>
                <ul>
                {% for post in category.post_set.all %}
                    <li><a href=#>{{post.title}}</a></li> 
                        - {{post.summary}}
                {% endfor %}
                </ul>
            </div>
        {% endfor %}
    </div>
{% endblock %}

这样可以很好地完成我的每个类别的所有帖子 - 但是我被卡住了,因为我只想通过每个类别的最新三个帖子。据我所知,在一个简单的视图中你可以使用order_by()[:3],但是你不能使用post_set。所以我需要一种过滤类别中前三个帖子的方法,所以使用多对多关系。希望这很清楚。

非常感谢

0 个答案:

没有答案