嘿,我目前正在学习 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。
在 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
课程。您可能在缩进(空格数)方面犯了错误。
模型.py
class Post(models.Model):
...
# python 2.x
def __unicode__(self):
return self.title
# python 3.x
def __str__(self):
return self.title
通过以下命令
Post.objects.all()
您将从数据库中获取所有帖子(在您的情况下,即 2)
这就是它显示的原因
[<Post: Post object>, <Post: Post object>]
而不是
[<Post: Title>, <Post: Title2>]
获得以下输出
你应该尝试一下
方法
Post.objects.get(pk=1)
其中 pk 是帖子的 id
方法
Post.objects.filter(id=1)
其中 id 是帖子的 id
这已经太晚了,但首先保存文件然后运行它会显示这一点。 只需保存您的 model.py 然后退出 shell,然后再次运行