Skip to main content
 首页 » 编程设计

python之Django 通过 timedelta 过滤查询集

2025年05月04日3952php

过滤响应晚于(例如 500 秒)的设备的好方法是什么?

假设我的模型:

class Device(models.Model): 
    last_response = models.DateTimeField(null=True, blank=True) 

我最好的一步是:

from django.utils import timezone 
 
for d in Device.objects.all(): 
    now = timezone.now() 
    if d.last_response and (now - d.last_response).seconds < 500: 
        # Do something 

但我不想为此查询所有数据库。我怎样才能让它与过滤器一起工作,比如 for d in Device.objects.filter(..some arguments..): ?

请您参考如下方法:

from django.utils import timezone 
from datetime import timedelta 
Device.objects.filter(last_response__lte=timezone.now()-timedelta(seconds=500))