我正在设置一个网站,其中“网页”始终位于父级“类别”中。某些页面将具有相同的标题,但将驻留在不同的类别中。目前django sluggify总是在slug中添加数字,如果名称相同:
foo/help/
bar/help-1/
有没有办法让它输出一个更智能的slug,以便slug对于该类别中的页面是唯一的。
foo/help/
bar/help/
etc/help/
etc/help-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字段的代码,你必须手动调整它来处理类别......