Как показать только один объект, если в Django есть несколько одинаковых объектов? - PullRequest
1 голос
/ 10 марта 2020

Прошу прощения за заголовок, но это лучший способ объяснить его.

У меня есть модель 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

Проблема в том, что если у одного Клиента есть in_flight и out_flight в том же trip, он будет отображаться дважды.

Как я могу показать trip только один раз?

1 Ответ

0 голосов
/ 10 марта 2020

Вы можете объединить наборы запросов вместе и добавить distinct:

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

ссылку:

...