django - Django ORM 从 ISO 时间和分数按天排序
问题描述
嗨,在我的数据库中,我有一些带有创建日期的数据和一些与之相关的分数。 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
谢谢
解决方案
在这里添加查找似乎没有多大意义__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')
推荐阅读
- html - 将 div 放置在图像顶部
- php - 为什么我在控制器中的模型调用期间出现禁止错误
- java - 如何使用带有 Cucumber 的 TestNG 划分并行和顺序测试
- xamarin - 从 xamarin.uitest 中的 app.Query 调用方法返回错误
- java - 我如何调用这个方法?
- python - Django - 通用 FormView - 将输入传递到模板中
- angular - Gridster高度可扩展
- node.js - 如何在我的代码中使用 telegraf-inline-menu 模块
- javascript - 在 react-native 中找不到变量 itemData
- mysql - 无法在 Azure AppService 中创建独立的 MySQL Docker 容器