|
|
1
4
如果您试图加入由外键或MyTyMyFielfield关系链接的表,那么可以使用双下划线语法。例如,如果您有以下型号:
你可以这样做:
|
|
|
2
2
不要使用api;-)说真的,如果你的连接很复杂,你应该会看到通过使用sql而不是api来显著提高性能。这并不意味着您需要在漂亮的python代码中使用脏sql;只需创建一个自定义管理器来处理连接,然后让其余代码使用它,而不是直接使用sql。 另外,我在DjangCon,他们在一个高性能Django研讨会,其中一个关键的东西,我拿走它是,如果性能是一个真正的关注(和你计划有重大交通有一天),你真的不应该做连接在首位,因为它们使得在保持良好性能的同时扩展你的应用几乎是不可能的。 以下是谷歌制作的视频: http://www.youtube.com/watch?v=D-4UN4MkSyI&feature=PlayList&p=D415FAF806EC47A1&index=20 当然,如果您知道您的应用程序永远不需要处理这种伸缩性问题,请加入:-)如果您也不担心使用api会对性能造成影响,那么您真的不需要担心(afaik)这一小部分(如果有的话,使用一个api方法与使用另一个api方法之间的性能差异。 只需使用: http://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships 希望有帮助(如果它不,希望一些真正的Django黑客可以跳进去,解释为什么方法X确实有一些明显的性能差异)。 |
|
|
3
1
使用queryset.query.join方法,但前提是此处描述的其他方法(使用双下划线)不足够。 |
|
|
4
0
Caktus博客对此给出了答案: http://www.caktusgroup.com/blog/2009/09/28/custom-joins-with-djangos-queryjoin/ 基本上有一个隐藏的queryset.query.join方法,允许添加自定义连接。 |