按外键组合显示相关项目 - Django [英] Group by Foreign Key and show related items - Django
本文介绍了按外键组合显示相关项目 - Django的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下模型:
class Company(CachedModel):
name = models.CharField(max_length=255)
class UserExtendedProfile(CachedModel):
company = models.ForeignKey(Company)
user = models.ForeignKey(User)
我基本上需要获得公司订购的用户列表:
I basically need to get a list of users ordered by company like this:
Company A
User 1
User 2
Company B
User 3
user 4
我尝试过几件事,最接近的是:
I tried a few things, and the closest I could get to is:
users = UserExtendedProfile.objects.values('company', 'user').order_by('company')
然而,这只会给我这样的结果:
However this would just give me results something like this:
[{'company': 1L, 'user': 17L}, {'company': 1L, 'user': 6L}, {'company': 2L, 'user': 15L}]
任何输入
感谢
推荐答案
您可以在 order_by()
方法。因此,您可以在订单中订购。
You can add multiple arguments on your order_by()
method. Therefore you can do ordering inside orderings.
users = UserExtendedProfile.objects.values('company', 'user').order_by('company', 'user')
对于像
[{ company: [user1, user2, ] }, ]
尝试使用 defaultdict
from collections import defaultdict
users = defaultdict(list)
for result in UserExtendedProfile.objects.values('company', 'user').order_by('company', 'user'):
users[result['company']].append(result['user'])
有了这个,你应该得到用户您想要的结构。
With this you should get on users the structure you want.
这篇关于按外键组合显示相关项目 - Django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文