Как установить условие "наоборот" для моделей django
Я использую Django3
и model
Я хочу получить данные Distance
из одного города в другой город.
Но в базе данных хранится только расстояние от A до B (потому что расстояние от B до C одинаковое)
Итак, я хочу получить правильный ряд, независимо от порядка городов.
Я могу сделать это с помощью этих двух предложений и проверить каждое на ошибки.
Distance.objects.get(key_first=firstcity, key_second=secondcity)
Distance.objects.get(key_second=secondcity, key_second=firstcity)
Однако это выглядит немного неудобно и требует двухкратной выборки БД, есть ли более умный способ, как этот ниже?
Distance.objects.get((key_first=firstcity, key_second=secondcity) | (key_second=secondcity, key_second=firstcity))
Вы почти угадали со вторым примером:
from django.db.models import Q
Distance.objects.filter(Q(key_first=firstcity, key_second=secondcity) | Q(key_second=secondcity, key_second=firstcity)).first()