Интерактивная оболочка Django возвращает объекты модели в виде объекта, а не в виде строки

Этот код из файла models.py в моем приложении под названием статья

from django.db import models

# Create your models here.

class Article(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    pub_date = models.DateTimeField('date published')
    likes = models.IntegerField()


    def __unicode__(self):
        return self.title

Я добавил 3 объекта в БД, как это

>>> from django.utils import timezone
>>> a = Article(title = "Test 1", body = "blah blah blah " ,pub_date=timezone.now(),likes=0)
>>> a.save()
>>> a.id
1
>>> a = Article(title = "Test 2", body = "blah blah blah " ,pub_date=timezone.now(),likes=0)
>>> a.save()
>>> a.id
2
>>> a = Article(title = "Test 3", body = "blah blah blah " ,pub_date=timezone.now(),likes=0)
>>> a.save()
>>> a.id
3
>>> Article.objects.all()
<QuerySet [<Article: Article object>, <Article: Article object>, <Article: Article object>]>

всякий раз, когда я вызывал метод Article.objects.all(), он возвращает мне заголовок в виде объекта. Из документации метод unicode должен вернуть мне фактический заголовок в виде строки.

Я новичок в Django, и я много пытался изменить метод Unicode, но, похоже, ничего не работает. Заранее спасибо

вот выход я получаю

 from article.models import Article
>>> Article.objects.all()
<QuerySet [<Article: Article object>, <Article: Article object>, <Article: Article object>]>

и вывод я хочу

<QuerySet [<Article: Article Test 1>, <Article: Article Test 2>, <Article: Article Test 3>]>

1 ответ

Решение

Вам нужно изменить def __unicode__(self): в def __str__(self): в качестве версии Unicode используется в Python2 и str в Python3

Другие вопросы по тегам