2011-07-01 5 views
1

에 대한 절대 URL 나는 다음과 같은 트리 구조를 가지고 :장고 MPTT - 카테고리

Cat 1 
--Sub Cat 1 
--Sub Cat 2 
Cat 2 
--Sub Cat 1 
--Sub Cat 2 
----Subsub Cat 1 

내가 대단한 일 쿼리를 사용하여이 정보를 표시 할 수있어 장고 - mptt 사용되었지만, URL을 만들려고 할 때 같은 :

http://www.somesite.com/categories/cat1/subcat1/subsubcat1/ 

부모 노드 슬러그 얻을 내 트리에서 각 범주에 대한 SQL 조회를하고있다 여기 내 코드 (이해할 수있다.) :

@models.permalink 
    def get_absolute_url(self): 
     if not getattr(self, '_slug', None): 
      url = self.slug 
      for ancestor in self.get_ancestors(ascending=True): 
       url = url + ancestor.slug + u'/' 
      self._slug = url  
     return ('catalogue_category', [str(self._slug)]) 

SQL에 미쳐 버리지 않고 URL 슬러그를 만들 수있는 MPTT의 기능이 있습니까?

+0

부모 당 하나의 쿼리가 확실합니까? MPTT의 요점은 이와 같은 쿼리가 저렴하다는 것입니다. 'get_ancestors'는 특히 하나의 쿼리입니다. 'get_absolute_url'이 범인이라는 것을 (아마도 쉘에서'connection.queries'를보고) 확인할 수 있습니까? –

답변

0

귀하의 질문에 대한 답변이 '아니오'라고 생각합니다. Daniel은 이미 자신의 의견에서 하나의 쿼리로 모든 조상을 얻을 수 있어야한다고 지적했으나 예를 들어 동의합니다. 당신은 각 품목을 위해 데이타베이스를 한 번 명중 할 필요가있을 범주의 명부가있다. 프로젝트에 문제가있는 경우 인스턴스의 슬러그를 어딘가에 캐시하고 새 슬러그/제목에 맞게 Category 모델의 post_save 신호로 업데이트 할 수 있습니다.

+0

예, 다음과 같이 변경 될 수 있습니다. http://stackoverflow.com/questions/8283031/how-do-i-add-a-trailing-slash-for-django-mptt-based-categorization-app –

관련 문제