1

我有一个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")
4

1 回答 1

0

您在这里过滤了两次集合,这意味着您只会检索Client具有 atrip__in_flight a的 s 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()
于 2020-03-10T20:22:33.997 回答