2013-08-28 1 views
-2

내가 extjs4.2와 파이썬 (장고)를 사용 treepanel의 ExtJS JSON 데이터를 반환하지만, 지금은 아래와 같이 treepanel의 ExtJS JSON 형식의 데이터를 반환하는 방법을 모른다 :사용 파이썬은

[{ 
    "text":"A", 
    "id": 1, 
    "leaf":false, 
    "parentId":0, 
    "root":4, 
    "children": [{ 
     "text":"A_1", 
     "id":2, 
     "leaf":false, 
     "parentId":1, 
     "root":3, 
     "children": [{ 
      "id":7, 
      "leaf":true, 
      "parentId":2, 
      "root":3, 
      "text":"A_1_1", 
      "children":[] 
     }] 
    }] 
}] 

고마워. 고마워.

+0

무엇이 있습니까? 너 뭐 해봤 니? – Fabian

+0

좀 더 구체적으로 알려주시겠습니까? 어디에서이 데이터를 가져 옵니까? 직렬화시이 데이터를 제공하는 django의 트리 객체가 있습니까? –

+0

java + extjs4 프로젝트의 예제에서 데이터를 얻을 수 있지만 파이썬을 사용하므로 ... – user2724512

답변

1

나무의 구조는 꽤 이해하기 쉽습니다. 모든 노드의 하위 속성이 자체적 인 나무 인 노드의 중첩 목록입니다. 다음과 같이 표현할 수 있습니다.

class Node(object): 
    def __init__(self, id, text, root='', parent=None): 
     self.text = text 
     self.id = id 
     self.root = root 
     self.parent = parent 
     self.children = [] 

    def append_child(self, node): 
     if node not in self.children: 
      node.parent = self 
      self.children.append(node) 

    def remove_child(self, node): 
     if node in self.children: 
      node.parent = None 
      self.children.remove(node) 

    def parent_id(self): 
     return self.parent.id if self.parent is not None else 0 

    def is_leaf(self): 
     return len(self.children) == 0 

    def to_dict(self): 
     children_dict = [child.to_dict() for child in self.children] 
     return { 
      "id": self.id, 
      "root": self.root, 
      "text": self.text, 
      "leaf": self.is_leaf(), 
      "parentId": self.parent_id(), 
      "children": children_dict, 
     } 

    def to_json(self): 
     return json.dumps(self.to_dict) 
+0

감사합니다. 시도 할 것입니다. – user2724512