按 json 中的计数排序

发布于 2024-12-13 03:12:12 字数 292 浏览 1 评论 0原文

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

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

/api/v1/blogs/?order_by=comment_count

但我不知道如何对不属于原始评论/博客模型的字段进行排序。我自己用脱水方法创建 comment_count ,该方法只接受评论数组并返回 comments.count()

任何帮助将不胜感激 - 我似乎找不到任何解释。

I'm using tastypie to create json from my django models however I'm running into a problem that I think should have a simple fix.

I have an object Blogs wich has Comment object children. I want to be able to do something like this with my json:

/api/v1/blogs/?order_by=comment_count

But I can't figure out how to sort on a field that's not part of the original comment/ blog model. I create comment_count myself in a dehydrate method that just takes the array of comments and returns comments.count()

Any help would be much appreciated - I can't seem to find any explanation.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怕倦 2024-12-20 03:12:12

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

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

If I understood correctly this should help:

Blog.objects.annotate(comment_count=Count('comments')).order_by('comment_count')
勿忘初心 2024-12-20 03:12:12

您也许可以使用 extra 来完成此操作,例如:

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

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

You might be able to do it with extra like something like:

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

I haven't tested this, but it should work. The caveat is it will only work with a relational database.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文