Есть ли способ перевернуть отношения в квесте Django? Например, превратить набор запросов Foo в набор запросов Bar, если все объекты Foo имеют внешний ключ для Bar?
Возьмем следующий пример:
#condition_n are previously defined statements that results in either True or False
if condition_1:
foo_qs = Foo.objects.filter(bar__something=...)
if condition_2:
foo_qs = foo_qs.filter(bar__another_thing=...)
if condition_3:
#you get the point
теперь это приведет к некоторому набору запросов foo_qs
в зависимости от оценки операторов типа condition_n
. Если бы я хотел также получить набор запросов bar, который получился бы в результате этого, я мог бы сделать следующее:
#condition_n are previously defined statements that results in either True or False
if condition_1:
foo_qs = Foo.objects.filter(bar__something=...)
bar_qs = Bar.objects.filter(something=...)
if condition_2:
foo_qs = foo_qs.filter(bar__another_thing=...)
bar_qs = Bar.objects.filter(another_thing=...)
if condition_3:
#you get the point
но в идеале я хотел бы взять любой набор запросов и дать ему имя внешнего ключа (в данном случае «бар») и перевернуть его на эквивалентный набор запросов. Есть ли способ сделать это?