2012-11-13 7 views
6

Djangoの開発ソースをソースからPostgreSQLと一緒にインストールした後、Djangoチュートリアルに取り掛かりました。私は、Ubuntu 12.10のpythonではなくpython3ですべてをやろうとしています。`` __unicode __() `はDjangoチュートリアルの基本的なポーリングアプリケーションでは機能しません

チュートリアルで、__unicode__()を再定義して、テーブルからobjects.all()を要求するときに賢明な結果を返すようになるまで、すべてがうまくいっていたようです。それはまったく機能しません。私は__str__()を試してみることにしました。

ただし、__str__()を再定義する必要はありません。だから、__str__()の間に__unicode__()が動作しないという私のインストールで何が問題になっていますか?チュートリアルの他のメソッドは正常に動作します。 __unicode__()文字を戻さながら

+0

Python3はまだDjangoで正式にサポートされていないことを知っておくべきです。 –

+0

バージョン1.6は正式にpython3をサポートし、1.6アルファを使用しています。 –

答えて

8

文字列は、2で2

対のPython 3で異なっ__str__()返されたバイトを処理されます。 3では、__str__()は文字列を返すようになりました。文字列はネイティブにUnicodeになり、__unicode__()は存在しません。 __str__()の古い2つの動作が本当に必要な場合は、今度は__bytes__()と考えています。

Python 3を使用している場合は、__str__()と答えてください.Djangoチュートリアルでは、2.x用に書かれていることを明示的に示しているので、違いがあります。

+1

ありがとう!私は1年以上前の人が同じ問題を抱えていて誰も彼らの質問に正しく答えなかったので(これはdjangoユーザーのためのGoogleグループにありました)、何かもっとあるかもしれないと思いました。チュートリアルでpython3の違いのコメントを追加してもいいですか? –

関連する問題