Django запрос для списка с объединением - PullRequest
1 голос
/ 20 марта 2012

В django у меня есть модели A и B, B имеет FK-ссылку на A. A2B - один-ко-многим

В моем коде контроллера я выбираю список A согласно некоторым критериям, и этот список передаетсяв шаблон для генерации html-страницы.

Этот шаблон использует FOR для генерации списка: {% для a in list_of_a%}

Вопрос в том, что с каждым напечатанным "a" мне нужно распечататьсвязанные Bs также.С не Django-кодом было бы просто присоединиться.Но как я могу реализовать это в Django?

спасибо

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Ваш вопрос неопределенный, но суть его в том, что вы хотите избежать 1 * N запросов, сгенерированных при циклическом просмотре ваших A s.

В Django 1.4 вы можете использовать новый prefetch_related, который будет генерировать дополнительный запрос, но только один вместо 1 * N.

Предыдущие версии Django не имеют ничего похожего, но есть приложение под названием django-batch-select , которое можно использовать для получения примерно эквивалентной функциональности.

0 голосов
/ 16 мая 2014

Вы можете сделать это самостоятельно, если знаете, как работает внутренняя магия QuerySet. Например, см.

https://github.com/benjiec/curious/blob/master/curious/graph.py

См. Контрольный пример о том, как использовать функцию перемещения

https://github.com/benjiec/curious/blob/master/tests/curious_tests/test_graph_fk.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...