Django выполняет объединение нескольких таблиц
У меня есть следующие таблицы,
class A:
field_1 = models.CharField()
field_2 = models.IntegerField()
class B:
a = models.ForeignKey(A, related_name='table_b')
some_other_field = models.CharField()
class C:
b = models.ForeignKey(B, related_name="table_c")
other_field = models.CharField()
Предположим, что ids
предоставляются для объектов в таблице A
, мне нужно получить все объекты C
, которые связаны с таблицей A
через таблицу B
. У меня есть следующий запрос, который дает то, что мне нужно, но мне интересно, есть ли лучший способ сделать это, я читал о prefetch_related
и select_related
, но пока не могу понять, как их использовать
c_list = C.objects.filter(b__in=B.objects.filter(a__pk__in=table_a_ids))
Кроме того, я хотел бы сгруппировать их по other_field
Любая помощь будет высоко оценена.
Нет необходимости в .select_related(…)
или .prefetch_related(…)
. Вы можете фильтровать с помощью:
c_list = C.objects.filter(b__a_id__in=table_a_ids)