17

私は次のモデルを持っています:

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}]

入力はありますか?

ありがとう

4

2 に答える 2

17

メソッドに複数の引数を追加できます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'])

これにより、必要な構造をユーザーに取得する必要があります。

于 2012-10-04T17:15:15.100 に答える
7

単に表示目的でこれを達成しようとしている場合は、 https ://docs.djangoproject.com/en/1.8/ref/templates/builtins/#regroup をご覧ください。

テンプレート内でそれを行うことができます。

于 2015-04-06T17:59:05.127 に答える