2017-12-22 4 views
0

私はdjangoを使用しています。私のモデルでは、私はslugfieldにペルシャ語を書いています(UTF-8などを使って)ページのアドレスにスラッグを使用します モデルのこのクラス:ペルシャ語をスラッグに書いて、ジャンゴのアドレスバーに使用してください

class Category(models.Model): 
    name = models.CharField(max_length=20, unique=True) 
    slug = models.SlugField(max_length=20, unique=True) 
    description = models.CharField(max_length=500) 
    is_active = models.BooleanField(default=False) 
    meta_description = models.TextField(max_length=160, null=True, blank=True) 
    meta_keywords = models.TextField(max_length=255, null=True, blank=True) 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 

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

    def __str__(self): 
     return self.name 

    def category_posts(self): 
     return Post.objects.filter(category=self).count() 

しかし、そこには何も保存した後にslugカラムではありませんし、私はペルシャ語を表示するためのURLで書くことかわかりません。私は何をすべきか教えてくれますか?

私はdjango 1.9とpython 3.6を使用します。

答えて

0

slugify関数のdocstringがある: 'allow_unicodeが' 偽の場合

はASCIIに変換します。スペースをハイフンに変換します。 英数字、アンダースコア、ハイフン以外の文字を削除します。 小文字に変換します。先頭と末尾の空白も削除します。

したがって、allow_unicodeフラグをTrueに設定して、ペルシャ語のテキストを保存する必要があります。

>>> text = 'سلام عزیزم! عزیزم سلام!' 
>>> slugify(text) 
'' 
>>> slugify(text, allow_unicode=True) 
'سلام-عزیزم-عزیزم-سلام' 
>>> 
関連する問題