在json中按计数排序

时间:2011-10-28 16:43:42

标签: python django json tastypie

我正在使用tastypie从我的django模型创建json但是我遇到了一个我认为应该有一个简单修复的问题。

我有一个对象博客,它有评论对象的孩子。我希望能够用我的json做这样的事情:

/ api / v1 / blogs /?order_by = comment_count

但我无法弄清楚如何对不属于原始评论/博客模型的字段进行排序。我在一个脱水方法中创建了comment_count,它只接受注释数组并返回comments.count()

任何帮助都会非常感激 - 我似乎找不到任何解释。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,这应该有所帮助:

Blog.objects.annotate(comment_count=Count('comments')).order_by('comment_count')

答案 1 :(得分:1)

您可以使用extra执行此操作,例如:

Blog.objects.extra(
    select={
        'entry_count': 'SELECT COUNT(*) FROM blog_entry WHERE blog_entry.blog_id = blog_blog.id'
    },
    order_by = ['-entry_count'],
)

我没有对此进行测试,但它应该可行。需要注意的是,它只适用于关系数据库。