2015-08-15 23 views
0

我有喜歡的模型如下:Slugify並用波斯語問題

class Rule(models.Model): 
    business = models.ForeignKey('profiles.Employee', limit_choices_to={'is_employee': True}) 
    title = models.CharField(max_length=50, blank=False) 
    slug = models.SlugField(max_length=50, blank=True, null=True) 
    detail = models.TextField(max_length=200) 
    frequency = models.CharField(choices=freqs, max_length=10, blank=True, null=True) 
    update = models.DateTimeField(auto_now=True) 
    timestamp = models.DateTimeField(auto_now_add=True) 

    def __str__(self): 
     return "{}--{}".format(self.business, self.title) 

    def save(self, force_insert=False, force_update=False, using=None, 
      update_fields=None): 
     if not self.title == "": 
      self.slug = slugify(self.title) 
     super(Rule, self).save() 

我沒有任何問題與塞節能英語值的記錄,但是當我想救波斯字符串我有遇到空白字段,儘管我在settings.py文件中寫了ALLOW_UNICODE_SLUGS = True。 我該怎麼辦?

+1

這個問題應該有所幫助:http://stackoverflow.com/questions/702337/how-到化妝Django的slugify-工作正常,與支持unicode字符串 – xyres

回答

2

這是在Django 1.9版引入新的選項是SlugField.allow_unicode

如果真,現場接受Unicode字母除了ASCII字母。默認爲False。 doc

例如:

在models.py文件中,定義slug列如下圖所示:

slug = models.SlugField(allow_unicode=True) 
1

它的工作! 首先你應該安裝unidecode由PIP:

pip install unidecode 

或者使用下面的鏈接: https://pypi.python.org/pypi/Unidecode

之後:

def save(self, force_insert=False, force_update=False, using=None, 
     update_fields=None): 
    from unidecode import unidecode 
    from django.template import defaultfilters 
    if not self.title == "": 
     self.slug = defaultfilters.slugify(unidecode(self.title)) 
    super(rule, self).save() 

它不是波斯不錯(阿拉伯語)語言,但它的作品!