django查询列表并加入

时间:2012-03-20 15:13:19

标签: django

在django我需要模型A和B,B有FK参考A. A2B是一对多

在我的控制器代码中,我根据某些条件选择A列表,并将此列表传输到模板以生成html页面。

此模板使用FOR生成列表:{%for a in list_of_a%}

问题是每打印一次“a”,我也必须打印相关的B。使用非django代码,它将是简单的连接。 但是我如何在django中实现这个呢?

感谢

2 个答案:

答案 0 :(得分:1)

您的问题很模糊,但其中的要点似乎是您要避免在循环A时生成的1 * N查询。

在Django 1.4中,您可以使用新的prefetch_related,它仍然会生成一个额外的查询,但只有一个而不是1 * N.

以前版本的Django没有任何相似之处,但有一个名为django-batch-select的应用程序可用于获得大致相同的功能。

答案 1 :(得分:0)

如果你知道如何使用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