希腊unicode字符django和管理员后端

时间:2013-12-12 09:35:42

标签: python django unicode django-admin

我有一个具有字段属性的模型教师。此属性由某些预定义选项填充。

model.py

#-*-coding" utf-8 -*-
field_options=[
    ('Greek letters', 'Greek letters'),
    ('Greek letters', 'Greek letters'),
    ('Greek letters', 'Greek letters'),
    ('Greek letters', 'Greek letters'),
]

class Teacher(models.Model):
    #fields here.....
    field = models.CharField(choices=field_options, max_length=20)

通过字段我的意思是教师可以是数学家,物理学家等,但我存储了这些领域的希腊词。当我去django的管理后端存储老师时,我使用希腊字母作为老师的名字为他的last_name他的地址等我为他的字段选择了一个选项但是当我点击保存时它给了我一个错误,即字段不是一个有效的选择,给我作为字段的unicode represantation的值,如

u'\u039c\u0391\u0398.... etc

为什么在其他字段(名字姓氏等)上保存其他希腊字母而不是特定字母?我可以做些什么来解决这个问题?

编辑:控制台给我以下错误。

/usr/local/lib/python2-7/dist-packages/django/db/models/fields/__init__.py:194:
UnicodeWarning:Unicode equal comparison failed to convert both arguments to Unicode -interpreting them as being unequal
    elif value == option_key

还有一个想法......我在syncdb之后更改了它。首先它只是一个没有选择的CharField而且我手动添加它(没有南方)。这可能是错误吗?

2 个答案:

答案 0 :(得分:2)

尝试将u添加到元组中的字符串:

(u'Greek letters', u'Greek letters'),
#('Greek letters', 'Greek letters'),

并检查元组中第一个元素max_length=20 ...

答案 1 :(得分:2)

unicode及其问题的一般补充:

当您使用Python2.7时,有时会遇到unicode问题。我强烈推荐 用这个题目花30分钟来避免大部分未来的问题。看看下面的话题:

实用的Unicode,或者,我该如何停止痛苦?

http://pyvideo.org/video/948/