2013-08-27 40 views
7

Otrzymuję ten błąd podczas próby wyświetlenia obiektów o nazwach spoza języka angielskiego w konsoli administracyjnej django.Błąd Unicode w django admin

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 

Header Mój plik .py jest

-*- coding: utf-8 -*- 

Jest to kod

class Owner(models.Model): 
    id = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=50) 
    def __str__(self): 
     return self.name 

szukałem wokół innych tematów na ten temat i okazało się, że folowing rozwiązania: í Próbowałem zmienić kodowanie w pliku py na Unicode, próbowałem pisać __str__ jako unicode(self.name) i jako u'%s',self.name. Próbowałem również dodać element __unicode__ z tymi samymi kombinacjami. Nie działa. Próbowałem również ponownie synchronizować db i odbijać serwer. Nic.

Dziwne jest to, że nazwy są wyświetlane w menu, ale kiedy próbuję edytować obiekt, otrzymuję błąd.

Byłbym wdzięczny za każdą pomoc.

Python 2.7, Django 1.5.2, Ubuntu 12, Postgres.

Full prześledzić wyjątku

Internal Server Error: /admin/calc/owner/3/ 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 140, in get_response 
    response = response.render() 
    File "/usr/local/lib/python2.7/dist-packages/django/template/response.py", line 105, in render 
    self.content = self.rendered_content 
    File "/usr/local/lib/python2.7/dist-packages/django/template/response.py", line 82, in rendered_content 
    content = template.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 140, in render 
    return self._render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 134, in _render 
    return self.nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 830, in render 
    bit = self.render_node(node, context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 74, in render_node 
    return node.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", line 124, in render 
    return compiled_parent._render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 134, in _render 
    return self.nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 830, in render 
    bit = self.render_node(node, context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 74, in render_node 
    return node.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", line 124, in render 
    return compiled_parent._render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 134, in _render 
    return self.nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 830, in render 
    bit = self.render_node(node, context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 74, in render_node 
    return node.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py", line 284, in render 
    return nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 830, in render 
    bit = self.render_node(node, context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 74, in render_node 
    return node.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", line 63, in render 
    result = block.nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 830, in render 
    bit = self.render_node(node, context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 74, in render_node 
    return node.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py", line 284, in render 
    return nodelist.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 830, in render 
    bit = self.render_node(node, context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 74, in render_node 
    return node.render(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py", line 84, in render 
    output = self.filter_expression.resolve(context) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 606, in resolve 
    new_obj = func(obj, *arg_vals) 
    File "/usr/local/lib/python2.7/dist-packages/django/template/defaultfilters.py", line 41, in _dec 
    args[0] = force_text(args[0]) 
    File "/usr/local/lib/python2.7/dist-packages/django/utils/encoding.py", line 107, in force_text 
    s = six.text_type(bytes(s), encoding, errors) 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 
+2

Czy próbowałeś zmianę nazwy '__str__' do' __unicode__' ? –

+0

dodał tag python3, ponieważ jest on najbardziej odpowiedni tutaj – ThiefMaster

+1

@ThiefMaster: zaskakujące, że OP twierdzi, że jest to Python 3, domyślny kodek ASCII oznacza, że ​​jest to Python 2. –

Odpowiedz

12

Zmień swój kod tak:

class Owner(models.Model): 
    id = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=50) 
    def __unicode__(self): 
     return self.name 

Zobacz ten link: django unicode error on admin page