UnicodeDecodeError 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
25 травня 2013 р. · 85 слів · Одна хвилина
Якщо виникла така помилка при редагуванні моделі в адмінці Django - рішення полягає тут:
from django.utils.encoding import smart_unicode
Необхідно просто обгорнути результат методу __unicode__
проблемної моделі у функцію smart_unicode
.
Тобто замість:
def __unicode__(self):
return self.title
Має бути:
def __unicode__(self):
return smart_unicode(self.title)
А по суті, функція smart_unicode
(яка тепер називається smart_text
) не потрібна взагалі. Проблема полягає в тому, що self.title
вже є рядком Unicode, і Python намагався неявно декодувати його у байти за допомогою ascii-кодеку.
Детальніше про цю проблему можна прочитати у цій презентації та документації.