2010-09-07 22 views
1

Je suis assez nouveau à Django.erreur manage.py syncdb alors que le modèle Django utilisant non-ascii verbose_name

Je veux le nom de mes modèles à afficher en chinois, donc j'utilisé verbose_name dans ma classe méta de mon modèle, les codes ci-dessous:

#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 

Cependant quand je lance manage.py syncdb, ce qui suit erreurs lancers:

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 

Il semble que manage.py ne peut pas traiter le caractère non-ascii dans mon verbose_name. Quelque chose que j'ai mal fait?

Merci.

Répondre

5

Vous devez spécifier un codage. Ajoutez la ligne suivante en tant que première ligne de votre fichier models.py.

# encoding: utf-8 

Mise à jour

L'OP a modifié sa question de dire que le "models.py est codé en Unicode". Alors l'erreur est étrange. Cela fonctionne pour moi en utilisant Django 1.2.1, Python 2.6.2 sur Ubuntu Jaunty.

Mise à jour 2

Pouvez-vous poster la chaîne d'encodage que vous avez utilisé pour votre models.py?

+0

Cela fonctionne bien après avoir ajouté "# encoding: utf-8", merci beaucoup. –

+0

+1 encodage devrait être tout ce qu'il ya aussi. –

+1

L'encodage en Unicode n'existe pas. Unicode n'est * pas * un encodage. –