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

发布于 2024-11-09 20:03:33 字数 329 浏览 0 评论 0原文

参加这样一个简单的课程。

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

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

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

Take a simple class like this.

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

All I want to do is sort the output of a query on this model by the time between those two fields so that things that haven't been viewed since they were updated show higher up than things that have.

I feel like I should be able to annotate the table and sort on that annotation, but I'm no genius when it comes to annotations (or raw SQL, for that matter). Could somebody kick me in the right direction?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

2024-11-16 20:03:33

您可以执行以下操作:

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

请参阅文档以获取详细说明。

You can do something like this:

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

See the docs for a detailed explanation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文