按django中相关模型的计数排序?

Seb*_*sen 4 django

我正在尝试通过查询集相关的另一个模型的计数来订购查询集。

class Post(models.Model):
    ...

class PostView(models.Model):
    post = models.ForeignKey(Post, related_name="post_views")
Run Code Online (Sandbox Code Playgroud)

现在,我认为这会起作用:

Post.objects.all().order_by('post_views')
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

/api/posts/?order_by=views 处的 AttributeError

'ManyToOneRel' 对象没有属性 'attname'

我究竟做错了什么?

Ala*_*air 5

如果你想按相关PostView实例的数量排序,你应该用计数注释查询集,然后按注释的字段排序。

from django.db.models import Count

Post.objects.annotate(num_views=Count('post_views')).order_by('num_views')
Run Code Online (Sandbox Code Playgroud)