Python 使用SQL进行排序';s CASE WHEN/THEN语法django
我试图在表中对联系人进行排序,我遇到了一些问题,我在这个问题上找到了一个很好的解决方案,也许这是一个过度的杀戮,但我试图在Python 使用SQL进行排序';s CASE WHEN/THEN语法django,python,django,django-rest-framework,Python,Django,Django Rest Framework,我试图在表中对联系人进行排序,我遇到了一些问题,我在这个问题上找到了一个很好的解决方案,也许这是一个过度的杀戮,但我试图在restapi上进行此操作,所以我仅用此影响我的rest视图,好的,这是我的排序解决方案: filter_date = self.request.query_params.get('filter_date', None) case_sql = '(case when status="Client" ' \ 'then 1
restapi
上进行此操作,所以我仅用此影响我的rest视图,好的,这是我的排序解决方案:
filter_date = self.request.query_params.get('filter_date', None)
case_sql = '(case when status="Client" ' \
'then 1 when status="Contacted" ' \
'then 2 when status="Qualified" ' \
'then 3 when status="Virgin" then 4 end)'
if filter_date is not None:
queryset = queryset.filter(next_action_date=filter_date).extra(select={'status': case_sql},
order_by=['status'])
我这样做是因为我不想更改我的db字段,就像我说的,我只想影响我的rest视图,所以问题是,我是否做了这个过滤器错误所有这些默认设置都是错误的
模型字段:
status = models.CharField(max_length=10, choices=LeadContactConstants.STATUSES, default=LeadContactConstants.STATUS_PRISTINE)
以及该字段的选项:
class LeadContactConstants(object):
STATUS_PRISTINE = "PRISTINE"
STATUS_CONTACTED = "CONTACTED"
STATUS_QUALIFIED = "QUALIFIED"
STATUS_CLIENT = "CLIENT"
STATUSES = ((STATUS_PRISTINE, "Virgin"),
(STATUS_CONTACTED, "Contacted"),
(STATUS_QUALIFIED, "Qualified"),
(STATUS_CLIENT, "Client"))
您链接到的问题来自2012年。从那时起,情况发生了很大的变化,例如加入了 Case()表达式类似于if。。。埃利夫。。。else语句 python中提供的When()对象中的每个条件都在中求值 顺序,直到计算出真实值为止。结果表达式 从匹配的When()对象返回 整个想法是,您不需要像过去人们有时不得不写的那样编写复杂的查询
标准做法是创建一个带有CASE/WHEN的注释,然后按照您链接到的问题是从2012年开始的顺序在注释中使用该注释。从那时起,情况发生了很大的变化,例如加入了 Case()表达式类似于if。。。埃利夫。。。else语句 python中提供的When()对象中的每个条件都在中求值 顺序,直到计算出真实值为止。结果表达式 从匹配的When()对象返回 整个想法是,您不需要像过去人们有时不得不写的那样编写复杂的查询
标准做法是创建一个带有CASE/WHEN的注释,然后在注释中按我看到的顺序使用它,因此创建注释将帮助我对其进行排序,我看到它在
django=1.8
中工作,如果我没有记错的话,这就是我正在使用的版本,这就是引入此功能的版本。我得到了注释的ValueError
,它说它与我的模型字段冲突,有没有办法克服这个问题?肯定有,但这是一个完全不同的问题。请用您的模型和您得到的确切错误以及您尝试的django查询发布一个新问题。好的,这是我的新问题,我看到了我的自定义注释,因此创建注释将帮助我排序,我看到这在django=1.8
中工作,如果我记得正确,这是我正在使用的版本,这就是引入此功能的版本。我得到了注释的ValueError
,它说它与我的模型字段冲突,有没有办法克服这个问题?肯定有,但这是一个完全不同的问题。请用你的模型和你得到的确切错误以及你尝试的django查询发布一个新问题。好的,这是我的新问题,带有我的自定义注释