在 Django 模型类列表视图中,如何允许用户选择对象的顺序?



举一个简单的例子,我在博客中有一个帖子模型和一个关联的评论模型。 在帖子视图中,我想有一个包含两个选项的下拉列表: "最新帖子", "评论最多">

我熟悉排序功能,它非常适合按最新帖子排序,但我无法找到如何:

  1. 按评论数对帖子进行排序
  2. 允许用户通过在顶部的下拉表单中提交来选择他们要查看的顺序。

在另一个存储库中执行等效操作的代码示例足以让我继续前进,但不幸的是我找不到。

如果你有一个从CommentPostForeignKey,你可以按Comments的Count排序,所以如果模型看起来像:

class Post(models.Model):
# …
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
# …

然后,查询集可能如下所示:

from django.db.models importCount
Post.objects.order_by(Count('comment').desc())

最新更新