簡體   English   中英

按外鍵分組並顯示相關項目 - Django

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM