У меня есть вывод из представления django, который требует некоторой сортировки. Я надеюсь, что я могу сделать это в шаблоне, а не в коде:
в основном, мне нужно представить граф узла / ребра; однако между двумя узлами может быть много ребер (направленных) - поэтому я хочу создать уникальные идентификаторы между ними, чтобы мой json не перезаписывался ('measure1' и 'measure2'):
nodes: {
nodeA: {},
nodeB: {}
},
edges: {
nodeA: {
nodeB: {
measurement1: {},
measurement2: {}
}
}
}
так что моя модель в основном такая:
class Measurement( models.Model ):
service = models.ForeignKey( Service, db_index=True )
source_node = models.ForeignKey( Node, related_name='source' )
target_node = models.ForeignKey( Node, related_name='target' )
проблема в том, что мой шаблон в настоящее время выглядит следующим образом (который перезапишет json:
"nodes": <blah>
"edges": {
{% regroup measurements by source_node_id as source_list %}
{% for source in source_list %}
"{{ source.grouper }}": {
{% for item in source.list %}
"{{ item.target_node_id }}": {
"id": "{{ item.id }}",
"service_type": "{{ item.service.service_type|lower }}" }{% if not forloop.last %},{% endif %}
{% endfor %}
}{% if not forloop.last %},{% endif %}
{% endfor %}
}
который в терминах дает что-то вроде:
edges: {
nodeA: {
nodeB: {
id: measurement1,
service_type: service1
},
nodeB: {
id: measurement2,
service_type: service2
}
}
так что в основном мне нужен вложенный оператор regroup в for item in source.list
только для измерений, которые соответствуют конкретному исходному и целевому узлам в этом цикле; но я не могу заставить его работать. какие-либо предложения?