如何在Django应用中创建树列表视图?

时间:2018-08-28 09:28:13

标签: python html django d3.js treeview

我正在使用Django创建一个Web应用程序,其中有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库创建一个图形。现在,我想知道如何创建树列表。关于如何执行此操作的任何想法?

0 个答案:

没有答案