Как сделать обратный набор запросов на основе набора ключей forgen в django

это немного сложно, вот 2 модели, к которым я выполняю запрос :

class Line(models.Model):
    # Relationships
    end_station = models.ForeignKey("stations.station", related_name='line_end_station', on_delete=models.CASCADE)
    starting_station = models.ForeignKey("stations.station", related_name='line_start_Station',
                                         on_delete=models.CASCADE)



class InLineStation(models.Model):
    # Relationships
    line = models.ForeignKey("lines.Line", on_delete=models.CASCADE)
    in_line_station = models.ForeignKey("stations.station", on_delete=models.CASCADE)

я получаю объект станции в запросе, и мне нужно отфильтровать модель линии на основе этого, если это начальная, конечная или находящаяся на линии станция. вот как я пытался это сделать :

@api_view(['POST', ])
def do_search_logic(request):
    if request.method == 'POST':
        from_station_id = request.data['from_station_id']
        to_station_id = request.data['to_station_id']
        from_station_object = station.objects.get(id=from_station_id)
        to_station_object = station.objects.get(id=to_station_id)
        Line.objects.filter(Q(starting_station=from_station_object) | Q(end_station=to_station_object) | Q(from_station_object in inlinestations_set)) #this_is_the_tricky_line

любая помощь по этому поводу ??

Попробуйте этот запрос:

Line.objects.filter(Q(starting_station=from_station_object) | Q(end_station=to_station_object) | Q(inlinestations_set__in_line_station=from_station_object))

Если вы хотите также включить строки, которые имеют to_station_object как инлайн-станцию:

Line.objects.filter(Q(starting_station=from_station_object) | Q(end_station=to_station_object) | Q(inlinestations_set__in_line_station=from_station_object) | Q(inlinestations_set__in_line_station=to_station_object))
Вернуться на верх