【问题标题】:In a Django model class list view, how can I allow the user to select the ordering of the objects?在 Django 模型类列表视图中,如何允许用户选择对象的顺序?
【发布时间】:2020-09-07 10:25:09
【问题描述】:

举个简单的例子,我在博客中有一个帖子模型和一个相关的评论模型。 在帖子视图中,我希望有一个包含两个选项的下拉菜单: “最新帖子”、“评论最多”

我对排序功能很熟悉,它适用于按最新帖子排序,但我一直无法找到如何:

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

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

【问题讨论】:

  • 你能分享PostComment的模型吗?

标签: python django-views django-queryset


【解决方案1】:

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

class Post(models.Model):
    # …

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

那么查询集可以如下所示:

from django.db.models import Count

Post.objects.order_by(Count('comment').desc())

【讨论】:

  • @Torres:为了交互式地选择它,你可能应该使用一些 JavaScript :)
猜你喜欢
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
  • 2018-09-18
  • 1970-01-01
相关资源
最近更新 更多