Django:根据两个字段之间的差异对模型进行排序

标签 django django-models annotations

参加这样一个简单的类(class)。

class MyModel(models.Model):
    last_updated = models.DateTimeField(auto_now_add=True)
    last_viewed  = models.DateTimeField(auto_now_add=True)

我想要做的就是按这两个字段之间的时间对该模型的查询输出进行排序,以便自更新以来未查看的内容显示得比已查看的内容更高。

我觉得我应该能够对表进行注释并根据该注释进行排序,但在注释(或原始 SQL)方面我并不是天才。有人能把我踢向正确的方向吗?

最佳答案

你可以这样做:

MyModel.objects.extra(select={'offset': 'last_viewed - last_updated'}).order_by('offset')

请参阅docs详细解释。

关于Django:根据两个字段之间的差异对模型进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155105/

相关文章:

java - Hibernate RevInfo 表 Rev 列达到最大范围,即 2147483647

python - 在 Django REST Framework (DRF) 中正确使用 "callable default function"

python - 按日期查询排序的唯一文本消息对象 Django ORM

django - “SubfieldBase的处理方法已弃用。请改用Field.from_db_value。”

python - Django 加载对象以防唯一键重复

django - 为什么 Django 中不再推荐永久链接装饰器?

java - Spring ModelMap 实现

python - 从nodejs到django的http请求

python - 如果使用 `rest-auth` 用户登录时如何添加last_login_ip?

java - 你有什么替代注释的方法?