Странное поведение функции slugify - PullRequest
0 голосов
/ 03 августа 2010

Отлично работает с админа сайта.Но приведенный ниже код не работает должным образом (некоторые символы отсутствуют, например, турецкий "ı") в некоторых языках.

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)

Например, давайте предположим, что имя - "ışçğö", и тогда слаг становится"scgo", когда вместо него должно быть "iscgo".

Ответы [ 2 ]

1 голос
/ 05 августа 2010

Попробуйте функцию slughifi для лучшей функциональности слизняков (спасибо Markus за показ мне).

1 голос
/ 03 августа 2010

Это поведение SlugField по определению. Слизень должен быть частью URL. Хотя URL-адреса могут поддерживать нелатинские символы, они не поддерживаются внутри слагов.

Слизняк - это газетный термин. Слизняк - это короткая метка для чего-то, содержащая только буквы, цифры, подчеркивания или дефис. Они обычно используются в URL.


Результаты, которые вы получаете, не соответствуют поведению Django:

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

Где именно вы получаете эти результаты?

...