【问题标题】:Django Slugfield removing articles ('the', 'a', 'an', 'that')Django Slugfield 删除文章('the'、'a'、'an'、'that')
【发布时间】:2023-04-01 01:45:01
【问题描述】:

我使用的是 django 1.10,我有这个设置:

class Chapter(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(unique=True)
    date_completed = models.DateTimeField(blank=True, null=True)

    completed = models.BooleanField(default=False)

    def __str__(self):
        return self.title

在管理员中,我有:

class ChapterAdmin (admin.ModelAdmin):

    list_display = ('title','slug', 'date_completed',)
    list_filter = ['title', 'date_completed']
    prepopulated_fields = {"slug": ("title",)}

我注意到,当我创建一个标题为“A boy and the pig”的章节时,我会得到“boy-and-pig”作为蛞蝓。 Django 正在从我的 slug 中删除文章。为什么会这样?解决方法是什么?

【问题讨论】:

    标签: python django


    【解决方案1】:

    为什么会这样?

    嗯,这是 Django 中 Slugfield, 的默认行为。为什么会这样?因为一般来说,it's been considered better for SEO

    (我说考虑过,因为链接的文章提到这可能是过时的想法。前提是文章等通常被认为是Stop Words,一种语言中最常见的词;它们是如此常见它们对搜索引擎的索引没有帮助,因为它们在大多数(如果不是所有)标题中都有。)

    有什么办法?

    首先 - 你为什么想要绕过它?有什么用例?

    但如果你真的很想做,那就很简单:

    from django.template.defaultfilters import slugify
    would_be_slug = 'This is one of those rarest of things: A blog that uses article.'
    slugify(would_be_slug)
    >>>u'this-is-one-of-those-rarest-of-things-a-blog-that-uses-article'
    

    This answer has some great advice 关于覆盖标准字段和 slugfields。

    There's also a nice package,如果你不想自己动手,它会为你做这件事。

    【讨论】:

    • 我也添加了一个相关的包,但值得指出的是,您已将 slug 和 title 都设置为唯一 - 大概(但不一定,所以这比任何东西都更重要) , slug 将依赖于标题,所以这有点多余。
    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 2011-07-19
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    相关资源
    最近更新 更多