当前位置:  开发笔记 > 后端 > 正文

Django ORM:获取满足特定条件的最新先前对象

如何解决《DjangoORM:获取满足特定条件的最新先前对象》经验,为你挑选了1个好方法。

给定一个对象:

class M(models.Model):
  test = models.BooleanField()
  created_date = models.DateTimeField(auto_now_add=True)

给定样本数据(假设单调增加自动created_date):

M(test=False).save()

M(test=True).save()

M(test=False).save()

X = M(test=True).save()

M(test=False).save()

Y = M(test=False).save()

M(test=False).save()

M(test=True).save()

如果给出Y,可以使用Django ORM创建一个返回X的查询(前一个查询,按日期,'test'= True).如果是这样,怎么样?

换句话说:给定Y,如何获得'test'为True的最新前一个元素?

感谢您的想法和反馈,谢谢!



1> Baishampayan..:

试试这个

M.objects.filter(created_date__lte=Y.created_date).filter(test=True)[0:1]

您还可以添加order_by子句

M.objects.filter(created_date__lte=Y.created_date)\
         .filter(test=True)\
         .order_by('-created_date')[0:1]

这应该工作.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有