【问题标题】:Is is possible to have the Django slugfield unique per user or other model是否可以让每个用户或其他模型的 Django slugfield 唯一
【发布时间】:2013-06-25 23:19:26
【问题描述】:

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

 foo/help/
 bar/help-1/

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

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

我也在考虑以同样的方式为用户创建一些独特的页面。它们将始终作为用户的子用户访问,从而使它们独一无二

【问题讨论】:

标签: django slug


【解决方案1】:

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

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

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 字段的代码,您将不得不手动调整它以处理类别...

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2019-01-25
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多