Подтвердить что ты не робот

Джанго-учебник unicode не работает

У меня есть следующие в моих 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()

Я не получаю Опрос: Что? но Опрос: объект опроса

Любые идеи?

4b9b3361

Ответ 1

Django 1.5 имеет экспериментальную поддержку для Python 3, но для Python 2.X написан учебник Django 1.5:

Этот учебник написан для Django 1.5 и Python 2.x. Если версия Django не соответствует, вы можете обратиться к учебнику для своей версии Django или обновить Django до последней версии. Если вы используете Python 3.x, имейте в виду, что ваш код может отличаться от того, что находится в учебнике, и вы должны продолжать использовать этот учебник, только если знаете, что делаете с Python 3.x.

В Python 3 вы должны определить метод __str__ вместо метода __unicode__. Существует декоратор python_2_unicode_compatible, который помогает вам писать код, который работает в Python 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

Для получения дополнительной информации см. раздел методов str и unicode в Портирование на Python 3.