django模板循环集合.defaultdict(lambda:collections.defaultdict(list))
在我看来,我从queryset创建了以下列表字典django模板循环集合.defaultdict(lambda:collections.defaultdict(list)),django,django-templates,django-views,Django,Django Templates,Django Views,在我看来,我从queryset创建了以下列表字典 #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('
#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')
位置字段是一个字符字段,格式如下:X-X-X-X用于创建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 %}
我怎样才能解决这个问题
提前谢谢
D我的view.py解决方案是:
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)
for obj in my_dict:
my_dict[obj].default_factory = None
return Response({'queryset': dict(my_dict)}, template_name='_internal_template.html')
链接到和
我的模板
{% for groups in queryset.itervalues %}
groups = {{ groups }}
<br><br>
{% for cols in groups.itervalues %}
cols = {{ cols }}
<br><br>
{% for obj in cols %}
obj = {{ obj}} in <br><br>
obj info = {{ obj.title }}, {{ obj.abstract }}<br>
{% endfor %}
{% endfor %}
{% endfor %}
{queryset.itervalues%中的组的%
组={{groups}}
{groups.itervalues%}
cols={{cols}}
{cols%中obj的%s}
obj={{obj}}in
obj info={{obj.title}},{{{obj.abstract}}}
{%endfor%}
{%endfor%}
{%endfor%}
Use我从未为此使用过django mptt,很高兴知道。我必须保留dict结构,因为它将加载一个复杂的HTML/jQuery页面
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)
for obj in my_dict:
my_dict[obj].default_factory = None
return Response({'queryset': dict(my_dict)}, template_name='_internal_template.html')
{% for groups in queryset.itervalues %}
groups = {{ groups }}
<br><br>
{% for cols in groups.itervalues %}
cols = {{ cols }}
<br><br>
{% for obj in cols %}
obj = {{ obj}} in <br><br>
obj info = {{ obj.title }}, {{ obj.abstract }}<br>
{% endfor %}
{% endfor %}
{% endfor %}