@maksam07

Как получить все строки в третьей таблице, обращаясь к первой через транзитную (внешние ключи)?

Есть модель типа:
class A( models.Model ):
	field = models.CharField()

class B( models.Model ):
	a = models.ForeignKey( A, on_delete = models.CASCADE, related_name = 'a_b_a' )

class C( models.Model ):
	b = models.ForeignKey( B, on_delete = models.CASCADE, related_name = 'b_c_b' )

Обращаясь в таблице "A":
c_all = A.objects.all()
Нужно дописать запрос, чтобы вытягивались все строки из таблицы "С". В таблице "B" может быть несколько строк, относящихся к "А", так же, в таблице "С" может быть множество строк, относящихся к любой строке в "В".
  • Вопрос задан
  • 55 просмотров
Решения вопроса 2
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
c_all = C.objects.filter(b__a_id=123)
Ответ написан
@maksam07 Автор вопроса
Пришлось идти от обратного, не знаю, правильный ли это вариант, но он работает:
a_get = A.objects.get( id = 123 )
c_all = C.objects.filter( b__a = a_get )
Может кто-то даст еще комментарий или на этом варианте можно остановиться?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы