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)
Вернуться на верх