22

私はmodels.pyに次のものを持っています

import datetime
from django.utils import timezone
from django.db import models

# Create your models here.
class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __unicode__(self):
        return self.question

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __unicode__(self):
        return self.choice_text  

しかし、私が入るとき

from polls.models import Poll, Choice
Poll.objects.all()

Poll が表示されません: What's up? しかし Poll: Poll オブジェクト

何か案は?

4

1 に答える 1

39

Django 1.5 は Python 3 を実験的にサポートしていますが、Django 1.5 のチュートリアルは Python 2.X 用に書かれています。

このチュートリアルは、Django 1.5 および Python 2.x 用に書かれています。Django のバージョンが一致しない場合は、Django のバージョンのチュートリアルを参照するか、Django を最新バージョンに更新してください。Python 3.x を使用している場合は、コードがチュートリアルの内容と異なる場合があることに注意してください。Python 3.x で何を行っているかを理解している場合にのみ、チュートリアルを使用してください。

Python 3 では、__str__メソッドではなくメソッドを定義する必要があります__unicode__python_2_unicode_compatiblePython 2 および 3 で動作するコードを作成するのに役立つデコレータがあります。

from __future__ import unicode_literals
from django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible
class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question

詳細については、Python 3ドキュメントへの移植のstr および unicode メソッドのセクションを参照してください。

于 2013-04-20T15:14:51.900 に答える