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

Bri*_*unt 2 django django-models django-orm

给定一个对象:

class M(models.Model):
  test = models.BooleanField()
  created_date = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

给定样本数据(假设单调增加自动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()
Run Code Online (Sandbox Code Playgroud)

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

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

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

Bai*_*ose 6

试试这个

M.objects.filter(created_date__lte=Y.created_date).filter(test=True)[0:1]
Run Code Online (Sandbox Code Playgroud)

您还可以添加order_by子句

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

这应该工作.