是否可以让Django slugfield对每个用户或其他模型都是唯一的

时间:2013-06-28 08:26:13

标签: django slug

我正在设置一个网站,其中“网页”始终位于父级“类别”中。某些页面将具有相同的标题,但将驻留在不同的类别中。目前django sluggify总是在slug中添加数字,如果名称相同:

 foo/help/
 bar/help-1/

有没有办法让它输出一个更智能的slug,以便slug对于该类别中的页面是唯一的。

foo/help/
bar/help/
etc/help/
etc/help-1/

我也在考虑以相同的方式为用户提供一些独特的页面。它们将始终作为用户的子项进行访问,使其以这种方式独特

1 个答案:

答案 0 :(得分:5)

slugify函数本身(django.template.defaultfilters.slugify)仅适用于它的输入,因此不会得到这样的结果。

wrt /您的原始问题,即“是否可以为每个用户或其他模型设置一个独特的slugfield”,只需在模型的unique_together中将相关字段声明为Meta,即

class Category(models.Model):
    # code here

class Page(models.Model):
    category = models.ForeignKey(Category)
    slug = models.SlugField("slug")

    class Meta:
        unique_together = (
            ("category", "slug"), 
        ) 

然后,如果你有一些自动生成/预填充slug字段的代码,你必须手动调整它来处理类别......