2012-01-27 2 views
0

사용자에게 자원을 배치 할 폴더와 같은 계층 구조를 제공하는 재귀 관계를 만들기 위해 장고를 사용하려고합니다.Django - 선택적 재귀 관계

이것을 달성하는 가장 좋은 방법은 무엇입니까?

나는 treebeard 또는 mptt를 사용하여 중첩 된 세트를 만들 수 있지만 트리 구조 (이 경우 많은 일이 일어날 수 있음)에 대한 변경 사항을 읽음으로써 상당히 많은 작업이 될 수 있음을 알고 있습니다. 필드를 업데이트해야합니다.

반면에 ForeignKey를 자체 모델로 폴더를 만들 수 있지만 외래 키 값이없는 최상위 폴더는 어떻게 관리합니까? 이 값을 NULL로 설정하면 Django가 불평 할 것입니까?

감사의 말.

감사합니다.

+1

그것 DB에 null이 남을 수 있습니다. 너가 말하는게 이거니? –

+0

예, 이것이 장고에 문제를 일으키는 지 아닌지 확실하지 않았습니다. 감사. – Dan

답변

2

Treebeard는 실제로 3 가지 트리 구현을 지원합니다. 필요로하는 것을 하나 선택하십시오.

  • 인접성 (adjacency) 목록
  • 구체화 된 경로
  • 중첩 된 세트 (SQL에서 나무와 작업의 아마 가장 빠른 방법) (빠른 읽기 속도가 느린의 비용으로 기록) (매우 효율이 높은 유지 보수의 비용을 읽고 쓰기에/

문서는 여기에 있습니다) 작업을 삭제 : https://tabo.pe/projects/django-treebeard/docs/tip/ 외부 키는`그래서`FK = models.ForeignKey ('MyModel', 널 (null) = 사실, 빈 = 참)로 정의 될 수있다