我的模型如下:
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()
我在slug中保存英文值记录没有任何问题,但是当我想保存波斯语字符串时,我遇到了空白字段,尽管我在ALLOW_UNICODE_SLUGS = True
文件中写了settings.py
。
我该怎么办?
答案 0 :(得分:2)
django 1.9版中引入的新选项是SlugField.allow_unicode
如果为True,除ASCII字母外,该字段还接受Unicode字母。默认为False。 doc
例如:
在models.py文件中,定义slug列,如下所示:
slug = models.SlugField(allow_unicode=True)
答案 1 :(得分:1)
有效! 首先,您应该通过Pip安装unidecode:
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()
这对波斯语(阿拉伯语)来说不太好,但它有效!