在django我需要模型A和B,B有FK参考A. A2B是一对多
在我的控制器代码中,我根据某些条件选择A列表,并将此列表传输到模板以生成html页面。
此模板使用FOR生成列表:{%for a in list_of_a%}
问题是每打印一次“a”,我也必须打印相关的B。使用非django代码,它将是简单的连接。 但是我如何在django中实现这个呢?
感谢
答案 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