Django ORM - получить записи, которые старше "продолжительности" дня записи - PullRequest
0 голосов
/ 16 мая 2019

У меня есть модель:

class Plan(models.Model):
  date = models.DateTimeField()
  duration = models.DurationField(default=30)

Я хочу получить записи старше today - duration с ORM. Является ли это возможным? Может быть, что-то вроде Plan.objects.filter(date__lt='self.duration') существует?

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

Как и Иван Старостин, упомянутый в комментарии F выражения очень полезны:

today = datetime.now()
plans = Plan.objects.filter(date__lt=today - F('duration'))
0 голосов
/ 16 мая 2019

Да, вы можете сделать это следующим образом:

Plan.objects.filter(duration__lt='YYYY-MM-DD')

Считайте, что у меня есть модальный продукт с созданным полем

class Product(models.Model):
     created = models.DateTimeField(auto_now_add=True)
     #other fields

Product.objects.filter(created__lt='2019-05-15')
...