Django:高效的数据库搜索

时间:2011-12-14 11:51:24

标签: database django

我需要一种有效的方法来搜索我的模型以找到特定的用户,这是一个列表,

用户 - 用户列表,姓名等。
活动 - 所有用户的活动表,当他们不可用时 技能 - 与用户的多对多关系,用户可以拥有很多技能 合同 - 与用户多对一,用户可以处理多个合同,每个合同都有一个评级(如果已完成)
......等。

所以我有很多表链接到User表。我需要搜索一组符合某些标准的用户;例如,他从下周四到周五可以使用,具有x / y / z技能,并且在所有已完成的合同中获得了平均4分。

有没有办法有效地进行搜索,同时最小化我点击数据库的次数?对不起,如果这是一个非常新的问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

不确定这种方法是否能解决所有4种情况的问题,但至少它可以帮助你解决第一种情况 - 有效地查询用户数据。

我通常会更快地使用valuesvalues_list查询功能,因为它会缩小实际SQL的SELECT部分,因此您可以更快地获得结果。关于此事Django docs

另外值得一提的是,从valuesvalues_list中的新开发版开始,您可以查询任何类型的关系,包括many_to_one。

最后你可能会发现in_bulk也很有用。如果我执行复杂查询,您可能会尝试使用valuesvalues_list首先查询某些模型的ID,然后使用in_bulk更快地获取模型实例。 Django docs关于那个问题。