2011-01-20 5 views
2

:장고 - 나는 다음 (간체) 모델 장고를 사용하고 관리하는 트리 구조

class Entity(models.Model): 
    name = models.CharField(max_length=30) 

class Person(models.Model): 
    last_name = models.CharField(max_length=30) 
    first_name = models.CharField(max_length=30) 
    entity = models.ForeignKey(Entity) 

나는 (사람으로, 확장에 의해) 엔티티 모델로 계층 구조 기능을 추가하고 싶습니다.

질문 : ~ 2000 리프 및 노드 엔터티에서 용인 할 수없는 쿼리 속도가 좋지 않을지라도 시스템 안정성 및 유지 보수 용이성을 높이기 위해 어떤 구현을 권하고 싶습니다.

1) 일반 필드 작업을 통해 액세스 할 수 있도록 SQL 데이터베이스 내에 중첩 세트로 계층 트리를 구현합니다. 또는

2) Django 외부에서 계층 구조 트리를 일반 Python 트리 (예 : Node 클래스)로 구현하고 Django 모델 메소드를 통해 계층 구조 정보에 액세스합니까?

감사합니다,

마이크

답변

2

나는 당신의 대안은 정말 상호 배타적 생각하지 않는다 - 당신은 어떤 데이터베이스와 일부 비 데이터베이스 요소를 가질 것하고 결국 아무것도.

나는 Modified Pre-Order Tree Traversal 알고리즘의 훌륭한 팬이고 우수한 Django 구현 인 django-mptt입니다.

그러나 중첩 세트에서 작동하지 않는다면 django-treebeard을 참조하십시오. 이는 인접 목록 및 구체화 된 경로를 제공합니다.