我正在尝试通过查询集相关的另一个模型的计数来订购查询集。
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'
我究竟做错了什么?
如果你想按相关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)
| 归档时间: |
|
| 查看次数: |
1074 次 |
| 最近记录: |