2015-04-03 4 views
0

В моей модели я поле определяется следующим образом:Кодирование в Django администратора

имя = models.CharField (max_length = 50)

Затем в панели администратора, если я пытаюсь вставить запись с именем который содержит символы типа 'č', 'š', 'ž', я получаю UnicodeEncodeError.

'ascii' codec can't encode character u'\u017e' in position 3: ordinal not in range(128) 

Что это? Почему django не использует utf-8 для всего?

ответ

1

Django использует utf-8 для всего. Я полагаю, что ошибка может быть в методе __unicode__() вашей модели.

Вы всегда должны использовать префикс u' для всех текстовых данных. Так что, если вы пишете что-то вроде этого:

def __unicode__(self): 
    return 'Model: %s' % self.name 

, то вам необходимо изменить его на:

def __unicode__(self): 
    return u'Model: %s' % self.name 
+1

Btw, моя проблема была, что я определял __str__ методов не __unicode__ – user568021

+0

На Django 1.9, есть обертка 'python_2_unicode_compatible', которая имеет дело с этим. См. Бит [__str __() здесь] (https://docs.djangoproject.com/en/1.9/intro/tutorial02/). – Jheasly

Смежные вопросы