python - Django - 按方法排序查询集

标签 python django

我正在尝试按与每个板 block 关联的帖子数量来排序此查询集。

这是董事会模型:

class Board(models.Model):
    name = models.CharField(max_length=140)
    def num_posts(self):
        return self.post_set.all().count()

这是帖子模型:

class Post(models.Model):
    title = models.CharField(max_length=140)
    content = models.TextField()
    location = models.ForeignKey(Board)

这是我试图获取所有图板的 View ,按每个图板的帖子数量排序:

def index(request):
    board_list = Board.objects.order_by('num_posts')
    context = RequestContext(request, {
        'board_list':board_list
    })
    return render(request,'index.html',context)

而且它不起作用。我收到此错误:

 Cannot resolve keyword 'num_posts' into field.

最佳答案

无法按方法排序 - 这无法很好地转换为 SQL 查询。

您可以执行以下操作:

from django.db.models import Count

board_list = Board.objects.annotate(num_posts=Count('post')).order_by('num_posts')

关于python - Django - 按方法排序查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872946/

相关文章:

python - SQLAlchemy DateTime 时区

python - 如何将 Pandas 数据框中的 UTM 转换为经度/纬度?

python - 在 django-rest-framework 中插入 django-allauth 作为端点

python - 以编程方式修改 Django 设置

python - 创建帐户时Django字段重复键

python - PyCharm 摆脱 doctest 背景颜色

python - Dask 存储/读取不适合内存的稀疏矩阵

python - 在ipython终端窗口点击生成MouseEvenT类型.MOUSE_DOWN异常

python - Django 中 assertDatabaseHas 的等价物是什么

管理页面上的 django unicode 错误