如果 Django 中有多个相等的 object,如何只显示一个 object?

How to show only one object if there's multiple equal objects in Django?

我对标题感到抱歉,但这是我能解释的最好方式。

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

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

ClientsArriving = Client.objects.filter(trip__in_flight__date__gt=timezone.now())
ClientsLeaving = Client.objects.filter(trip__out_flight__date__gt=timezone.now()) 
ClientsDash = ClientsLeaving | ClientsArriving

问题是,如果一个客户端在同一个trip中有一个in_flight和一个out_flight,它会显示两次。

如何才能只显示一次 trip

您可以将查询集组合在一起并添加 distinct:

ClientsDash = ( 
    Client.objects
    .filter(trip__in_flight__date__gt=timezone.now())
    .filter(trip__out_flight__date__gt=timezone.now())
    .distinct()
)

参考: