我在Django有这个模型:
@python_2_unicode_compatible
class Student(models.Model):
CHOICES = (('Graduación', 'Graduación'),
('Baja Temporal', 'Baja Temporal'),
('Expulsión', 'Expulsión'))
persona = models.OneToOneField(Persona)
enrollemente_code = models.CharField(max_length=10, unique=True)
prev_school = models.CharField(max_length=256, blank=True, null=True)
medical_notes = models.TextField(null=True, blank=True)
enrollement_date = models.DateField()
egress_date = models.DateField(blank=True, null=True)
egress_reason = models.CharField(max_length=64, choices=CHOICES,
blank=True, null=True)
egress_comments = models.TextField(null=True, blank=True)
def __str__(self):
return self.persona.get_full_name()
我创建了这个模型:
^{pr2}$当我打电话给取消注册。有效吗()在我看来,我得到这样的警告:
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal '==': infix(10, lambda context, x, y: x.eval(context) == y.eval(context)),
出口原因字段被认为是错误的。在
你知道有什么方法可以证明这一点吗?或者掉头?在
注意,在
CHOICES
数组中,您的条目应该是(code, label)
。代码是Django在内部和数据库中实际使用的代码,而标签是纯粹的表示。在在这里,你遵循这个惯例是有意义的。除此之外,这将使项目的国际化变得更容易(如果需要的话)。顺便说一句,这也会让你的问题消失:
请注意,如果您的数据库中已经有数据,您将不得不以某种方式迁移它。在
现在,根据您使用的Python版本,确保非ASCII字符串声明为unicode也是一个好主意(否则,您将由Python在运行时猜测它们的编码)。在
具体来说,在python2中,您应该执行以下操作(在python3中,您不需要执行任何操作):
^{pr2}$另外,一定要声明文件的编码。第一行应该是:
^{3}$注意,这假设您的文件是用
utf-8
编码的,但这是一个非常安全的假设。在我使用的是python2.7,我解决了这个问题,比如在字符串中添加一个'u'
u'Explicación'
应用于标签
相关问题 更多 >
编程相关推荐