【发布时间】:2011-08-17 06:45:25
【问题描述】:
我有一些来自 django 视图的输出,需要一些排序。我希望我可以在模板中而不是在代码中做到这一点:
基本上,我需要表示一个节点/边图;但是,两个节点(有向)之间可能有很多边 - 因此我想在它们之间创建唯一的 id,这样我的 json 就不会被覆盖('measurement1' 和 'measurement2'):
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
}
}
所以基本上,我需要在for item in source.list 中使用嵌套的重组语句,仅用于与该循环中的特定源节点和目标节点匹配的测量;但我似乎无法让它工作。有什么建议吗?
【问题讨论】:
-
这个 JSON 是包含在其他 HTML 中还是单独关闭?
-
它是一个安静的界面,所以它自己。
-
最好不要使用模板,而是通过代码来完成。但这不是您具体问题的答案。
-
同意,但我希望有一种“更简单”的方式......在代码中这样做的问题是我必须重新映射/复制所有数据(例如使用服务)。干杯,
标签: django templates django-templates