0
가 나는장고 템플릿 루프 collections.defaultdict : 내보기에서
#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의 형식은 다음되는 검색어 세트에서 목록의 다음 사전을 만들 (람다 collections.defaultdict (목록)) 가 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
이다
,451,515,{% 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 %}
결과는 내가 {% for cols in groups.1 %}
을하려고 노력하지만 (빈) 작동하지 않습니다
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>]})
입니다. {% in cols for groups.iteritems %} 할 경우 : "Int is iterable"입니다.
https://code.djangoproject.com/ticket/16335 내 경우를 보면이
my_dict = collections.defaultdict(lambda: collections.defaultdict(list))
dictionary['foo']['foo1'].append('bar')
내가 어떻게 해결할 수있다?
미리 감사드립니다.
D
사용 [장고 - mptt] (HTTPS : //github.com/django-mptt/django-mptt/) –
나는 이런 목적으로 django-mptt를 사용하지 않았다. 잘 알고있다. 복잡한 HTML/jQuery 페이지를로드하기 때문에 dict 구조체를 유지해야합니다. – Daviddd