2017-03-17 86 views
0

假设有一个Django模型用户被分配了一个类型。Django模型返回组

|id|name |type| 
|--|-----|----| 
|1 | John| A | 
|2 | Doe | B | 
|3 | Jane| A | 
|4 | Mary| B | 
|5 | Jill| C | 

我想查询用户模型,以便它返回用户组。像Users.group('type',count=2)我应该得到的模型[[@john,@jane],[@doe,@mary]]。所以基本上我想要做一个group byhaving但仍然得到整个模型。

我想让django让底层数据库执行查询,只需加载必要的模型,而无需在python端加载所有模型并执行过滤。有没有办法做到这一点?

+1

有这样的查询集合结构可以让你像这样分组结果。你应该使用'itertools.groupby'。 – ozgur

+0

@ozgur:让它成为一个答案,所以我可以upvote它。像'.orderby(“type”)''应该就足够了。 – 9000

回答

0

正如Django文档所述,the Django Query API filter method允许您过滤您的查询集。

认为这样做会做这样的事情的最好方法:

user_groups = [User.objects.filter(type=group)[:2] for group in groups]

我希望有一个更好的办法,因为这将必须为每种类型做一个单独的查询,但我不知道一个。