如果 Django 中有多个相等的 object,如何只显示一个 object?
How to show only one object if there's multiple equal objects in Django?
我对标题感到抱歉,但这是我能解释的最好方式。
我有一个 trips
模型,其中 in_flights
和 out_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()
)
参考:
我对标题感到抱歉,但这是我能解释的最好方式。
我有一个 trips
模型,其中 in_flights
和 out_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()
)
参考: