0

私の見解では、クエリセットから次のリストの辞書を作成します

#view.py
queryset = MyModel.objects.filter(owner=user, dashboard=tab).order_by('position')
my_dict = collections.defaultdict(lambda: collections.defaultdict(list))    
for obj in queryset:
    my_dict[int(obj.position.split('-')[0])][int(obj.position.split('-')[2])].append(obj)
return Response({'queryset': dict(my_dict)}, template_name='dashboard/_maps_tab.html')

位置フィールドは次の形式の charFiled です: XXXX は my_dict の作成に使用されました

my_dict は

--[1] #group
----[1] #col 1
------ object1.1.1 #group.col.pk
------ object1.1.2
------ object1.1.3
----[2] #col 2
------ object1.2.4
----[3] #col3
------ object1.3.5
------ object1.3.6

--[2] #group
----[1] #col 1
------object2.1.7 #group.col.pk

--[3] #group
----[1] #col1
------ object3.1.8 #group.col.pk
----[2] #col2
------object3.2.9
------object3.2.10

私のテンプレートでやりたいこと

{% for groups in queryset.iteritems %}

    groups = {{ groups }} <br>

    {% for cols in groups %}

      cols = {{ cols }} <br>

      {% for objs in cols %}

        {{ objs }} in <br><br>

        {% for obj in objs %}        
          {{ obj.title }}, 
          {{ obj.desc}}, 
          {{ obj.fieldN }},         

        {% endfor %}

      {% endfor %}


    {% endfor %}

{% endfor %}

結果は

groups = (1, defaultdict(<type 'list'>, {1: [<Obj: Obj 1 by daviddd>, <Obj: Obj 2 by daviddd>, <Obj: Obj3 by daviddd>], 2: [<Obj: Obj 4 by daviddd>], 3: [<Obj: Obj 5 by daviddd>, <Obj: Obj 6 by daviddd>, <Obj: Obj 7 by daviddd>]}))
cols = 1
cols = defaultdict(<type 'list'>, {1: [<Obj: Obj 1 by daviddd>, <Obj: Obj 2 by daviddd>, <Obj: Obj3 by daviddd>], 2: [<Obj: Obj 4 by daviddd>], 3: [<Obj: Obj 5 by daviddd>, <Obj: Obj 6 by daviddd>, <Obj: Obj 7 by daviddd>]})

groups = (2, defaultdict(<type 'list'>, {1: [<Obj: Obj 7.7 by daviddd>]}))
cols = 2
cols = defaultdict(<type 'list'>, {1: [<Obj: Obj 7.7 by daviddd>]})

groups = (3, defaultdict(<type 'list'>, {1: [<Obj: Obj 7.8 by daviddd>]}))
cols = 3
cols = defaultdict(<type 'list'>, {1: [<Obj: Obj 7.8 by daviddd>]}) 

私はやろうとしまし{% for cols in groups.1 %}たが、うまくいきません(空)。{% for cols in groups.iteritems %} を実行すると、「Int is not iterable」になります。

https://code.djangoproject.com/ticket/16335を見ると、私のケースは

my_dict = collections.defaultdict(lambda: collections.defaultdict(list))    
dictionary['foo']['foo1'].append('bar')

どうすれば解決できますか?

前もって感謝します!

D

4

1 に答える 1