2016-02-02 7 views
5

データベースに2つのモデルと2つの値を作成しました。キリル文字の最初の文字とラテン文字の第2文字。Django 1.9.2でのコーディングエラー

It seems work fine

from __future__ import unicode_literals 

from django.db import models 

class Lecturer(models.Model): 
    fname = models.CharField('First name', max_length=200) 
    mname = models.CharField('Middle name',max_length=200) 
    lname = models.CharField('Last name', max_length=200) 
    pub_date = models.DateTimeField('Date published') 

    def __str__(self): 
     return "{} {} {}" .format(self.fname, self.mname, self.lname) 
しかし、私はリンクをクリックし、キリル文字値を編集しようとすると、私はエラーを取得します。

UnicodeEncodeError at /admin/lecturers/lecturer/2/change/ 
'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 
Request Method: GET 
Request URL: http://localhost:8000/admin/lecturers/lecturer/2/change/ 
Django Version: 1.9.2 
Exception Type: UnicodeEncodeError 
Exception Value:  
'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 
Exception Location: /usr/local/lib/python2.7/dist-packages/django/utils/encoding.py in force_text, line 80 
Python Executable: /usr/bin/python 
Python Version: 2.7.6 
Python Path:  
['/home/vald/project', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-i386-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0', 
'/usr/lib/pymodules/python2.7', 
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client'] 
Server time: Tue, 2 Feb 2016 20:30:07 +0200 
+0

Python3.xまたは2.7を使用していますか? 3.xの場合は、どのようにあなたのdevサーバを実行するのですか?python manage.py runserver? – Yaaaaaaaaaaay

+0

私はPython 2.7を使用しています。 –

+0

次に、__str__を__unicode__に置き換えてください。それはうまくいくはずです。 – Yaaaaaaaaaaay

答えて

4

提供python_2_unicode_compatibleデコレータ使用のPython 2.7で__unicode____str__メソッドを使用するには:そうでなければあなたは__str____unicode__を使用する必要があります

from __future__ import unicode_literals 

from django.db import models 
from django.utils.encoding import python_2_unicode_compatible 


@python_2_unicode_compatible 
class Lecturer(models.Model): 
    fname = models.CharField('First name', max_length=200) 
    mname = models.CharField('Middle name',max_length=200) 
    lname = models.CharField('Last name', max_length=200) 
    pub_date = models.DateTimeField('Date published') 

    def __str__(self): 
     return "{} {} {}" .format(self.fname, self.mname, self.lname) 

を。

+0

ありがとう、ありがとう。 –

+0

問題ありません! @VladyslavKrylasov – agconti

+0

Pythonでunicodeに関する素敵なスライド:http://acdha.github.io/djangocon-internationalization-tutorial/handling-unicode.html –

関連する問題