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-кодеку.
Детальніше про цю проблему можна прочитати у цій презентації та документації.