Django ORM按ISO时间和得分按天排序

时间:2019-05-29 10:15:08

标签: django python-3.x django-models django-orm

数据库中的HI我有一些带有创建日期的数据以及与之相关的某些分数。created_date的类型为DateTime。我正在使用django ORM。

数据就像

**col1   created_date                  score**
xxx    2019-05-28T10:07:57.000Z      8
yye    2019-05-27T10:07:57.000Z      9
abc    2019-05-28T09:07:57.000Z      10

我希望按日期对日期进行排序,然后按降序得分,即

abc    2019-05-28T09:07:57.000Z      10
xxx    2019-05-28T10:07:57.000Z      8
yye    2019-05-27T10:07:57.000Z      9

我正在使用

SomeModel.objects.values_list(col , score, created_date                                                                
).filter(somefilter tcategory=cat).order_by(
                        '-created_date__day',
                        '-score')

我要例外-

    raise NotImplementedError('subclasses of BaseDatabaseOperations may require a datetime_extract_sql() method')
NotImplementedError: subclasses of BaseDatabaseOperations may require a datetime_extract_sql() method

谢谢

1 个答案:

答案 0 :(得分:0)

在此处添加__day查找似乎没有多大意义,您可以按created_by_date降序排列:

SomeModel.objects.values_list(
    'col' , 'score', 'created_date'
).filter(
    somefilter tcategory=cat
).order_by('-created_date', '-score')

如果您真的想在当天的日期之前订购,可以在TruncDate [Django-doc]处使用注释:

from django.db.models.functions import TruncDate

SomeModel.objects.values_list(
    'col' , 'score', 'created_date'
).annotate(
    create_day=TruncDate('created_date')
).filter(
    somefilter tcategory=cat
).order_by('-create_day', '-score')