Django MPTT - 类别的绝对网址

时间:2011-07-01 11:14:57

标签: django django-mptt

我有以下树形结构:

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

使用django-mptt我能够使用1个查询显示此信息,这很好,但在尝试创建类似的URL时:

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

它正在为我的树中的每个类别执行SQL查找以获取父节点slug(这是可以理解的。)这是我的代码:

@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)])

是否有任何MPTT功能可以让我创建一个url slug而不会对SQL发疯?

1 个答案:

答案 0 :(得分:0)

我认为你的问题的答案是否定的。正如丹尼尔在他的评论中已经指出的那样,它应该能够通过一个查询获得所有祖先,但我同意,例如。您有一个类别列表,您需要为每个项目按一次数据库。如果这对您的项目来说是个问题,您可以考虑在某处缓存实例的slu and并在post_save模型的Category信号上更新它们以适应新的slu / / titles!