2

我有以下树结构:

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

使用 django-mptt 我可以使用 1 个查询来显示此信息,这很棒,但是在尝试创建如下网址时:

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 上发疯?

4

1 回答 1

0

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

于 2011-07-01T17:38:37.917 回答