Объединение таблиц и извлечение столбцов в Django
У меня есть две таблицы (с соответствующими моделями):
Mapping
id parent_id child_id child_qty
1 1 1 5
2 1 2 3
3 1 4 4
4 2 1 3
5 2 3 2
Child
id name property
1 name1 prop1
2 name2 prop2
3 name3 prop3
4 name4 prop4
Note: in Mapping model, 'child' is defined as a ForeignKey on Child model, that automatically creates 'child_id' in Mapping table.
Я хочу написать джоинт:
SELECT mt.child_id, mt.child_qty, ct.name, ct.property
FROM mapping mt, child ct
WHERE mt.parent_id = 1;
, что дает результат:
child_id child_qty name property
1 5 name1 prop1
2 3 name2 prop2
4 4 name4 prop4
Я написал вот это:
my_qs = Mapping.objects.select_related('child').filter(parent_id=1).values()
print(my_qs)
# [{'id':1, 'parent_id': 1, 'child_id': 1, 'child_qty': 5},
# {'id':2, 'parent_id': 1, 'child_id': 2, 'child_qty': 3},
# {'id':3, 'parent_id': 1, 'child_id': 4, 'child_qty': 4}]
Что нужно изменить в запросе ORM, чтобы:
- Я не вижу 'id' и 'parent_id' в выводе .
- Я вижу 'ct.name и ct.property' в выводе (с префиксом 'ct.' и без него)
попробуйте это
my_qs = Mapping.objects.filter(parent_id=1).values('child_id', 'child_qty', 'child__name', 'child__property')
print(my_qs)