Django:查询来自不同类别的最新帖子

Fri*_*dka 1 django django-views

class Post(models.Model):
    title = ...
    category = models.ForeignKey(Category)
    date = .......

class Category(models.Model):
    title = ....
Run Code Online (Sandbox Code Playgroud)

在主页面上,我想显示5个包含最新日期的帖子,但所有帖子必须来自不同的类别.例如,有50个类别.可能吗?

Chr*_*att 6

from django.db.models import Max

categories = Category.objects.annotate(most_recent=Max(post__date)).order_by('-most_recent')[:5]

posts = list()
for category in categories:
  posts.append(category.post_set.latest())
Run Code Online (Sandbox Code Playgroud)

这会将具有最新帖子日期的类别注释为值most_recent,然后您可以按此顺序获取最近的5个类别.

然后,循环浏览各个类别,并为每个类别提取最新帖子.完成.