2011-12-14 73 views
0

我需要一個有效的方式,通過我的模特搜索找到一個特定的用戶,這裏有一個列表,Django的:有效的數據庫搜索

用戶 - 用戶,他們的名字列表等
活動 - 針對所有用戶,事件表上時,他們無法
技能 - 多到許多與用戶的關係,用戶可以有很多的技能
合同 - 多到一個與用戶,用戶可以w在多個合同獸人,每一個等級(如果已完成)
...等

所以我得到了很多鏈接到用戶表的表。我需要搜索符合特定標準的一組用戶;例如,他可以從下週四到週五使用,具有x/y/z技能,並且在他所有完成的合同中獲得平均4分的評分。

有一些方法能夠有效地做到這一點搜索,同時最小化時代的#我打的數據庫?對不起,如果這是一個非常新的問題。

謝謝!

+0

我看到的唯一選擇就是非規範化。嘗試,基準,選擇最有效的。 – DrTyrsa 2011-12-14 12:01:41

回答

1

不知道這個方法可以解決你的問題對所有4例,但至少它應該幫助你在第一個 - 高效地查詢用戶的數據。

我經常發現使用valuesvalues_list查詢功能更快,因爲它SLIMS下來的實際SQL的SELECT一部分,因此你會更快地得到結果。 Django docs關於此。

另外值得一提的是,從valuesvalues_list內的新開發版本開始,您可以查詢任何類型的關係,包括many_to_one。

最後,你可能會發現in_bulk也很有用。如果我做一個複雜的查詢,你可以嘗試先用valuesvalues_list,然後使用in_bulk來獲取模型實例更快一些型號的查詢的ID。 Django docs