强化功能的奇怪行为

时间:2010-08-03 13:17:02

标签: django slug

从管理站点完美运行。但是下面的代码在某些语言中不能正常工作(某些字符缺失,如土耳其语“ı”)。

class Foo(models.Model):
    name = models.CharField(max_length=50, unique=True, db_index=True)
    slug = models.SlugField(max_length=100, unique=True, db_index=True)

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)
        super(Foo, self).save(*args, **kwargs)

例如,我们假设名称是“ışçğö”,然后当它应该是“iscgo”时,slug变为“scgo”。

2 个答案:

答案 0 :(得分:1)

根据定义,这是SlugField行为。 slug应该是URL的一部分。尽管URL可能支持非拉丁字符,但slugs内部不支持这些字符。

  

Slug是一个报纸术语。 slu is是一个   包含的东西的短标签   只有字母,数字,下划线或   连字符。 它们通常用于网址。


您获得的结果与Django行为不一致:

>>> from django.template.defaultfilters import slugify
>>> v = u"ışçğö"
>>> slugify(v)
u'isg'

你究竟在哪里得到这些结果?

答案 1 :(得分:1)

尝试slughifi功能以获得更好的slug功能(感谢Markus向我展示这一点)。