如何使用 timenow 获取具有两个日期的对象,即使其中一个日期在 Django 中是过去的?

How to use timenow to fetch objects with two dates even if one of the dates is in the past in Django?

我有一个 trips 模型,其中 in_flightsout_flights 关联到 Client

我想显示哪些 Clients 现在 之后有行程,所以我执行了以下操作:

ls= Clients.objects.get(nif=nif
ClientsDash = (Clients.objects.filter(trip__in_flight__date__gt=timezone.now()).filter(trip__out_flight__date__gt=timezone.now()).distinct())

问题是,如果一个客户端过去有一个航班,或者只有一个航班,它不会显示 trip

编辑

这是Trip模型

class Trip(models.Model):
    trip_id = models.CharField(max_length=20, unique=True, verbose_name="Ref. Viagem")
    destination = models.CharField(max_length=200, null=True, verbose_name='Destino')
    client = models.ForeignKey(Clients, null=True, on_delete=models.CASCADE, verbose_name="Cliente")
    out_flight = models.ForeignKey(Flight, related_name="outbound_flight" , null=True, on_delete=models.SET_NULL, verbose_name="Voo Ida")
    hotel = models.ForeignKey(Hotels, null=True, on_delete=models.SET_NULL, verbose_name="Hotel")
    in_flight = models.ForeignKey (Flight, related_name="inbound_flight", null=True, blank=True, on_delete=models.SET_NULL, verbose_name="Voo Regresso")

Flight 模型

class Flight(models.Model):
    date = models.DateTimeField(default=datetime.now, blank=True, verbose_name="Data")
    flight_id = models.CharField(max_length=10, verbose_name="Ref. Voo")
    company = models.ForeignKey(AirCompany, null=True, on_delete=models.SET_NULL, verbose_name="Companhia")
    airport = models.ForeignKey(Airport, null=True, on_delete=models.SET_NULL, verbose_name="Aeroporto")

你在这里过滤了两次集合,这意味着你只会检索 Client 具有 trip__in_flight trip__out_flight 那是在未来。

但是您可以使用逻辑或 | 来指定一个航班就足够了:

from django.db.models import Q

Clients.objects.filter(
    Q(trip__in_flight__date__gt=timezone.now()) |
    Q(trip__out_flight__date__gt=timezone.now())
).distinct()