django1.9slug字段不适用于外语



我正在构建一个帖子应用程序,它会根据帖子标题自动创建slug。若标题中有任何外语,则不会生成slug。

我已经在这里介绍了一些答案,但没有多大帮助。我是不是在下面遗漏了什么?

class Post(models.Model):
    title = models.CharField(max_length=120)
    slug = models.SlugField(unique=True, allow_unicode=True)
    content = models.TextField()
def create_slug(instance, new_slug=None):
    slug = slugify(instance.title)
    if new_slug is not None:
        slug = new_slug
    qs = Post.objects.filter(slug=slug).order_by("-id")
    exists = qs.exists()
    if exists:
        new_slug = "%s-%s" %(slug, qs.first().id)
        return create_slug(instance, new_slug=new_slug)
    return slug
def pre_save_post_receiver(sender, instance, *args, **kwargs):
    if not instance.slug:
        instance.slug = create_slug(instance)

settings.py:中添加如下

ALLOW_UNICODE_SLUGS = True

您需要告诉slugify它也应该允许unicode。请参阅文档。

def create_slug(instance, new_slug=None):
    slug = slugify(instance.title, allow_unicode=True)

另外,请注意:SlugField的默认max_length为50个字符。因此,转换长标题可能会导致对SlugField来说太长的段塞,并引发异常。

相关内容

  • 没有找到相关文章

最新更新