0

它可以在管理站点上完美运行。但是下面的代码在某些语言中无法正常工作(缺少某些字符,例如土耳其语“ı”)。

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)

例如,假设名称是“ışçğö”,然后 slug 变成了“scgo”,而应该是“iscgo”。

4

2 回答 2

1

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

蛞蝓是一个报纸术语。slug 是某事物的短标签,仅包含字母、数字、下划线或连字符。它们通常用于 URL。


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

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

你究竟是从哪里得到这些结果的?

于 2010-08-03T13:19:59.250 回答
1

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

于 2010-08-05T01:43:37.380 回答