【问题标题】:Complex ordering in django db querydjango db查询中的复杂排序
【发布时间】:2012-08-13 08:32:21
【问题描述】:

我的数据库中有以下条目:

`title`            `status`
Titanic            WIP
Avatar             WIP
Terminator         Complete
Abyss              Default

我想按对象的状态对这些对象进行排序:默认,然后是 WIP,然后是完成。正确的顺序是:

Abyss / Default
Avatar / WIP
Titanic / WIP
Terminator / Complete

我将如何进行以下 db 调用?

Title.objects.order_by(status='Default', status='WIP', status='Complete',title)

【问题讨论】:

标签: python django django-models


【解决方案1】:

要做这个查询,可以使用django的extra

titles = Title.objects.all()
ordered_query = titles.extra(select={
                'ordering':"(
                    case when status='Default' then 1 
                         when status='WIP' then 2
                         when status='Complete' then 3
                    end)"
                }).order_by('ordering', 'title')

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 2012-10-25
相关资源
最近更新 更多