Я создаю веб-приложение с использованием Django, в котором у меня есть 2 плагина, которые загружают файлы json и html. Данные загружаются в модель, которую я создал. Вот модель:
from django.db import models
class Node:
def __init__(self, identifier, name, attributes):
self._identifier = identifier
self._name = name
self._marked = False
if attributes is None:
self._attributes = {}
else:
self._attributes = attributes
self._neighbour_nodes = []
def identifier(self):
return self._identifier
def name(self):
return self._name
def marked(self):
return self._marked
def attributes(self):
return self._attributes
def attribute(self, attribute):
return self._attributes.get(attribute)
def neighbour_nodes(self):
return self._neighbour_nodes
def set_attribute(self, name, value):
self._attributes[name] = value
def add_neighbour_node(self, neighbour_node):
if neighbour_node != self._identifier and neighbour_node not in
self._neighbour_nodes:
self._neighbour_nodes.append(neighbour_node)
def __str__(self):
return "Objekat " + self._name + " " + str(self.identifier) + " "
График классов:
class Graph:
def __init__(self, is_tree=False):
self._nodes = {}
self._is_tree = is_tree
self._root = None
self._path = None
def set_path(self, path):
self._path = path
def get_path(self):
if self._path is not None:
return self._path
def set_root(self, root):
if self._is_tree:
self._root = root
def get_root(self):
if self._is_tree:
return self._root
def get_edges_number(self):
numberOfEdges = 0
for node in self._nodes.values():
numberOfEdges += len(node.neighbour_nodes())
return numberOfEdges
def is_tree(self):
return self.is_tree
def get_nodes(self):
return self._nodes
def add_node(self, identifier, name, attributes=None):
self._nodes[identifier] = Node(identifier, name, attributes)
def add_edge(self, node1_id, node2_id):
if self._nodes[node1_id] is not None and self._nodes[node2_id] is
not None:
self._nodes[node1_id].add_neighbour_node(node2_id)
def nodes(self):
return self._nodes.values()
def node(self, identifier):
return self._nodes.get(identifier)
def search(self, name):
seachGraph = Graph(self.is_tree)
for node in self._nodes.values():
if name.lower() in node.name().lower() or name.lower() ==
node.identifier():
seachGraph.add_node(node.identifier(), node.name(),
node.attributes())
else:
for atribute in node.attributes():
if name.lower() in atribute:
seachGraph.add_node(node.identifier(), node.name(),
node.attributes())
for node in seachGraph.nodes():
for n in self._nodes[node.identifier()].neighbour_nodes():
if seachGraph.node(n) is not None:
seachGraph.add_edge(node.identifier(), n)
return seachGraph
Итак, данные успешно загружены в эту структуру. Мне удалось создать график с использованием библиотеки D3.js. Теперь я хочу знать, как создать древовидный список. Любые идеи о том, как я могу это сделать?