[英]Group by Foreign Key and show related items - Django
我有以下型號:
class Company(CachedModel):
name = models.CharField(max_length=255)
class UserExtendedProfile(CachedModel):
company = models.ForeignKey(Company)
user = models.ForeignKey(User)
我基本上需要獲得公司訂購的用戶列表,如下所示:
Company A
User 1
User 2
Company B
User 3
user 4
我嘗試了一些東西,最接近的是:
users = UserExtendedProfile.objects.values('company', 'user').order_by('company')
然而,這只會給我這樣的結果:
[{'company': 1L, 'user': 17L}, {'company': 1L, 'user': 6L}, {'company': 2L, 'user': 15L}]
有什么投入?
謝謝
您可以在order_by()
方法上添加多個參數。 因此,您可以在訂單內訂購。
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'])
有了這個,你應該讓用戶得到你想要的結構。
如果您只是為了顯示目的而嘗試完成此操作,請查看: https : //docs.djangoproject.com/en/1.8/ref/templates/builtins/#regroup
它允許您在模板內部執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.