Django Post.objects.all()不显示对象属性

时间:2015-05-19 15:31:53

标签: python django

嘿,我目前正在阅读Django女孩教程http://tutorial.djangogirls.org/en/django_orm/README.html

我正在尝试使用

在python shell中显示我的所有Post对象
from blog.models import Post
Post.objects.all()

应该显示

[<Post: Title>, <Post: Title2>]

但是显示

[<Post: Post object>, <Post: Post object>]

它只是说&#34;发布对象&#34;而不是标题。是什么原因?我一直在完全按照教程,不能理解它为什么会这样显示它。当它说&#34;发布对象&#34;时,很难组织所有的帖子。对于他们所有人。

我使用的是Python 3.4.1版和Djangon 1.8.1版。

3 个答案:

答案 0 :(得分:4)

在Django Girls Tutorial的Chapter 9中,有关于为Post模型创建__str__方法的说明,如下所示:

class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

如果仍然无法让它工作,请更新您的问题并加入Post课程。您可能在缩进(空格数)时犯了错误。

答案 1 :(得分:3)

<强> models.py

class Post(models.Model):
    ...
    # python 2.x
    def __unicode__(self):
        return self.title

    # python 3.x
    def __str__(self): 
        return self.title

答案 2 :(得分:0)

通过以下命令

Post.objects.all()

您正在从您的数据库获取所有帖子(在您的情况下,即2)

这就是为什么显示

[<Post: Post object>, <Post: Post object>]

而不是

[<Post: Title>, <Post: Title2>]

获取以下输出

你应该试试

  1. 方法

    Post.objects.get(PK = 1)

  2. 其中pk是帖子的ID

    1. 方法

      Post.objects.filter(ID = 1)

    2. 其中id是帖子的ID