2010-09-07 67 views
1

我对Django来说很新。manage.py syncdb错误,而Django模型使用非ascii verbose_name

我要显示我的模型的名称在中国,所以我在元级我的模型中使用verbose_name,代码如下:

#this models.py file is encoded in unicode 

class TS_zone(models.Model): 
    index = models.IntegerField() 
    zone_name = models.CharField(max_length=50); 
    zone_icon = models.ImageField(upload_to='zone_icon', null=True) 
    is_active = models.NullBooleanField(blank=True, null=True) 
    status = models.CharField(max_length=7,choices=SETTING_STATUS_CHOICES) 
    class Meta: 
     ordering = ('index',) 
     verbose_name = u'你好嗎?' 
     verbose_name_plural = u'你們都好嗎?' 

    def __unicode__(self): 
     return self.zone_name 

但是当我运行manage.py执行syncdb,以下错误抛出:

File "E:\pythonroot\myproject\..\myproject\myapp\models.py", line 19 
SyntaxError: Non-ASCII character '\xe4' in file 
E:\pythonroot\myproject\..\myproject\myapp\models.py on line 19, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 

看来manage.py不能处理我的verbose_name中的非ascii字符。我做错了什么?

谢谢。

回答

5

你必须指定一个编码。将以下行添加为models.py文件的第一行。

# encoding: utf-8 

更新

的OP编辑了他的问题说, “models.py以Unicode编码”。那么这个错误很奇怪。它适用于我在Ubuntu Jaunty上使用Django 1.2.1,Python 2.6.2。

更新2

你能后的编码字符串,您使用您的models.py

+0

它工作正常后,我添加了“#编码:utf-8”,非常感谢。 – 2010-09-07 06:34:52

+0

+1编码应该都是有的吧。 – 2010-09-07 07:47:03

+1

没有'编码在Unicode'这样的事情。 Unicode是*不是编码。 – 2010-09-07 07:59:53

相关问题