在django界面中添加元素时遇到问题。我有两个定义:
# -*- coding: utf-8 -*-
class VisitType(models.Model):
name=models.CharField(max_length=50,db_index=True,verbose_name="Nombre del tipo de visita")
is_basal=models.BooleanField(default=False,verbose_name="Es basal")
def __unicode__(self):
if self.is_basal:
s="%s [BASAL]" % (self.name)
else:
s="%s" % (self.name)
return s
class Visit(models.Model):
type=models.ForeignKey(VisitType,null=True,on_delete=models.SET(VisitType.get_sentinel_visit_type),db_index=False,verbose_name="Tipo de visita")
def __unicode__(self):
return "Tipo de visita %s" % (self.type)
在管理站点中添加VisitType对象时,没有问题。 adding_VisitType
但是,在管理员中添加访问时: adding_Visit
我用这个提示得到了UnicodeDecodeError: “无法编码/解码的字符串是Analtica”(注意我在表单中使用了“Analítica”访问类型。
我正在使用django 1.5.1,MySQL-python 1.2.4。
MySQL正在使用带有utf8_general_ci排序规则的表。
数据库是MySQL 5.5.30。
问候。
答案 0 :(得分:10)
您的__unicode__
方法都没有返回unicode字符串。它们都返回字节串。这是灾难的秘诀。特别是在这些函数中,你将unicode插入到字节字符串中。
请改为:
def __unicode__(self):
if self.is_basal:
s = u"%s [BASAL]" % (self.name)
else:
s = self.name
return s
和
return u"Tipo de visita %s" % (self.type)