Как отфильтровать объект, имеющий один из двух внешних ключей в отношениях "один ко многим" в Django

У меня есть модели городов и маршрутов

class City(LocationAbstractModel):
    name        = models.CharField(max_length=255)

    def __str__(self):
        return self.name

class Route(BusAbstractModel):
    leaving_from = models.ForeignKey(location_models.City, on_delete=models.CASCADE, related_name='leaving_from')
    destination = models.ForeignKey(location_models.City, on_delete=models.CASCADE, related_name='destination')
    distance = models.IntegerField(null=True, blank=True)
    prices = models.ManyToManyField(carrier_models.Carrier, through="RoutePrice")
    crossing_cities = models.ManyToManyField(location_models.City, blank=True)

    def price(self, carrier_id):
        return self.routeprice_set.filter(carrier_id=carrier_id).order_by('created_at').first().price

    def __str__(self):
        return self.leaving_from.name + " -> " + self.destination.name

Как я могу запросить только города, которые имеют одно из отношений в модели маршрутов. Я хочу отфильтровать города, в которых есть отношение leaving_from или destination ship.

Я пытался

models.City.objects.filter(Q(route__leaving_from__isnull=False) |Q(route__destination__isnull=False)).distinct()

но он возвращает только города, которые имеют отношение как к пункту_отправления, так и к пункту назначения.

Как я могу фильтровать города, которые имеют одно из отношений

Вернуться на верх