如何使用 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_flights
和 out_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()
我有一个 trips
模型,其中 in_flights
和 out_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()