내가 작업하고 작업의 실행 사이의 기간을 설명하는 간단한 모델을 장고 ORM에 시간 차이 만료 :쿼리
내가 작업이 장고의 ORM을 사용하여 조회 할 수 있도록하려면class Task(models.Model):
last_check_timestamp = models.DateTimeField(blank=True, null=True, db_index=True)
class TaskSchedule(models.Model):
task = models.OneToOneField(Task, blank=False, null=False, related_name='schedule')
interval_seconds = models.IntegerField(blank=False, null=False)
신선하고 낡은 것, 즉 일정에 따라 운영 될 예정인 것을 의미합니다.
나는 현재를 통해 ORM없이 특정 레코드에 대한이 계산 해요 :
import datetime
task = Task.objects.get(id=123)
fresh = task.last_check_timestamp is not None and datetime.datetime.now() < (task.last_check_timestamp + datetime.timedelta(seconds=task.schedule.interval_seconds))
내가 장고의 ORM과 동등 할 것이다, 그래서 한 번에 모든 신선한/오래된 작업을 조회 할 수 있습니까?
이것은 분명히 작동하지 않지만 다음과 같은 것입니다 :
Tasks.objects.filter(Q(last_check_timestamp__isnull=True) || Q(last_check_timestamp + datetime.timedelta(seconds=schedule__interval_seconds)))
흥미 롭군요. 내가 고려하고있는 또 다른 솔루션은 단순히 다음 실행의 날짜 시간을 구체화하여 timedelta를 제거하는 것입니다. 그리고 그 구체화 된 datetime으로 필터링합니다. – Cerin