2010-09-07 100 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

相關問題