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

问题描述 投票:0回答:4

嘿,我目前正在学习 Django girls 教程 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>]

它只是说“发布对象”而不是标题。 到底是什么原因呢?我一直在严格按照教程进行操作,但无法理解为什么它会这样显示。 当所有帖子都显示“帖子对象”时,很难组织所有帖子。

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

python django
4个回答
5
投票

在 Django Girls 教程的第 9 章中,有为您的 __str__

 模型创建 
Post
 方法的说明,如下所示:

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
课程。您可能在缩进(空格数)方面犯了错误。


4
投票

模型.py

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

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

0
投票

通过以下命令

Post.objects.all()

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

这就是它显示的原因

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

而不是

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

获得以下输出

你应该尝试一下

  1. 方法

    Post.objects.get(pk=1)

其中 pk 是帖子的 id

  1. 方法

    Post.objects.filter(id=1)

其中 id 是帖子的 id


0
投票

这已经太晚了,但首先保存文件然后运行它会显示这一点。 只需保存您的 model.py 然后退出 shell,然后再次运行

© www.soinside.com 2019 - 2024. All rights reserved.