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)

たとえば、名前が「ışçğö」で、代わりに「iscgo」であるはずのスラッグが「scgo」になると仮定します。

4

2 に答える 2

1

これはSlugField定義による動作です。スラッグはURLの一部であると想定されています。URLは非ラテン文字をサポートしている場合がありますが、これらはスラッグ内ではサポートされていません。

ナメクジは新聞用語です。スラッグは何かの短いラベルであり、文字、数字、アンダースコア、またはハイフンのみが含まれます。それらは一般的にURLで使用されます。


あなたが得ている結果はDjangoの振る舞いと一致していません:

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

これらの結果はどこで正確に得られますか?

于 2010-08-03T13:19:59.250 に答える
1

slug 機能を改善するには、 slughifi関数を試してください(これを見せてくれたMarkusに感謝します)。

于 2010-08-05T01:43:37.380 に答える