Интерактивная оболочка 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