2010-06-21 4 views
1

내 항목을 분류하려고하는데, 원하는 수준의 여러 수준이 있습니다. 예 :이 예에서Django의 다중 레벨 계층 구조 드롭 다운?

css 
    layout 
      floats 
    specificity, selectors 
html 
    html 5 

csshtml 부모 범주이며, CSS는이 아이가하고 layoutfloats의 아이가.

난 내가 항목을 게시 할 때 있도록

class Category: 
    name = models.TextField() 
    parentId = models.IntegerField(blank=True) 

은 내가이에 우둔 해요, 내가 어떻게 내 관리자의 멀티 레벨 드롭 다운을 할 수있을 것이다 것입니다 필요 스키마를 가정 I 카테고리를 쉽게 선택할 수 있습니까?

다시 말해, 항목 모델에 항목을 입력 할 때 입력 항목 하나를 선택할 수 있도록 다중 레벨 중첩 드롭 다운 메뉴를 생성하려면 어떻게해야합니까?

+1

방금이 문제가 발생했습니다. 최대한 통합하려고 시도합니다 ... http://code.djangoproject.com/wiki/CookBookCategoryDataModelPostMagic –

답변

5

귀하의 문제가 귀하의 진술 내용과 약간 다른 것으로 보입니다. 여기에서 문제는 훨씬 간단 계층 구조를 표시하는 방법에 대한되지 않습니다 :

def __unicode__(self): 
    return self.depth * " " 

안됐다 캡처하고 계층 구조/깊이를 표시하는 방법입니다. 이것은 일반적인 문제입니다. 즉, 실제 데이터베이스에 트리를 저장하는 것입니다. 일반적으로 솔루션은 쓰기/읽기 무거움과 정상화까지의 균형에 따라 다릅니다. 예를 들어 모델의 'save'메소드를 사용하여 재귀 적으로 루트에 도달 할 수 있으며 노드에서 'depth'속성을 저장할 수 있습니다. 제 제안은 django mptt입니다. 그것은 꽤 단단하고 많은 정상적인 장애물을 해결합니다. 보너스로 일반적인 트리 작업을위한 좋은 API를 얻을 수 있습니다.

관련 문제