сортировать по количеству в JSON - PullRequest
2 голосов
/ 28 октября 2011

Я использую tastypie для создания json из моих моделей django, однако я столкнулся с проблемой, которая, я думаю, должна быть легко исправлена

У меня есть объект Blogs, у которого есть объект Comment у детей. Я хочу иметь возможность сделать что-то подобное с моим JSON:

/ api / v1 / blogs /? Order_by = comment_count

Но я не могу понять, как отсортировать поле, которое не является частью оригинальной модели комментария / блога. Я сам создаю comment_count в методе dehydrate, который просто берет массив комментариев и возвращает comments.count ()

Любая помощь будет принята с благодарностью - кажется, я не могу найти никакого объяснения.

Ответы [ 2 ]

2 голосов
/ 29 октября 2011

Если я правильно понял, это должно помочь:

Blog.objects.annotate(comment_count=Count('comments')).order_by('comment_count')
1 голос
/ 28 октября 2011

Вы можете сделать это с extra примерно так:

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

Я не проверял это, но оно должно работать.Предостережение: он будет работать только с реляционной базой данных.

...