manage.py syncdb 错误:Django 模型使用非 ASCII verbose_name

1 投票
1 回答
1882 浏览
提问于 2025-04-16 03:47

我对Django还很陌生。

我想让我的模型名称显示为中文,所以我在模型的元类中使用了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字符。我是不是做错了什么?

谢谢。

1 个回答

5

你需要指定一个编码方式。在你的 models.py 文件的第一行添加以下内容。

# encoding: utf-8

更新

提问者已经修改了问题,表示 "models.py 是用 Unicode 编码的"。那么这个错误就有点奇怪了。在我使用 Django 1.2.1 和 Python 2.6.2 的 Ubuntu Jaunty 系统上是可以正常工作的。

更新 2

你能把你在 models.py 中使用的编码字符串发出来吗?

撰写回答