我使用的是 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",)}
我注意到,当我创建一个标题为“男孩和 pig ”的章节时,我得到的标题是“男孩和 pig ”。 Django 正在从我的 slug 中删除文章。为什么会这样?解决方法是什么?
最佳答案
为什么会这样?
嗯,这是 Slugfield, 的默认行为在 Django .为什么会这样呢?因为一般来说,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如果您不想自己动手,这将为您完成此操作。
关于python - Django Slugfield 删除文章 ('the' 、 'a' 、 'an' 、 'that' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39545657/