我正在Django建立一个博客。我在终端中的virtualenv中按此顺序运行这些命令:
python manage.py shell
from posts.models import Post
Post.objects.all()
Post.objects.filter(title__icontains=“example”)
Post.objects.create(title=“Djangohead”, content=“Born to raise shell, born to raise shell,
we know how to do it and we do it real well”)
Post.objects.all()
queryset = Post.objects.all()
for obj in queryset:
print obj.title
print obj.content
print obj.updated
print obj.timestamp
print obj.id
print obj.pk
我得到了正确的结果,包括第一个<[<Post: title example>]>
然后我退出,运行服务器,并直接在views.py
和index.html
中执行相同的操作。
对于练习,我删除了我在这两个文件中所做的操作并再次运行命令。现在,在输入
之后python manage.py shell
from posts.models import Post
Post.objects.all()
我在列表前打印了“QuerySet”:
<QuerySet [<Post: title example>]>
为什么突然发生,我该如何将其逆转回原来的样子呢?我在两者之间唯一做的就是更改我的主文件夹名称,但我几乎看不出它是如何相关的。
答案 0 :(得分:1)
看起来你误解了你在做什么以及你是怎么做的。
直接回答你的问题
“为什么会突然发生”
>>> Post.objects.all()
<QuerySet [<Post: title example>]>
当有要返回的项目时,是预期的行为。由于您没有告诉python将查询集返回给变量,因此将其返回到stdout。
如何将其逆转回原来的状态?
发生的事情实际上并不是问题。语言和框架的行为符合预期。
尝试这样的事情:
$ python manage.py shell
>>> from posts.models import Post
>>> post = Post(title=“Djangohead”)
>>> post.save()
>>> other_post = Post(title=“FooBar”)
>>> other_post.save()
>>> posts = Post.objects.all()
>>> for post in posts:
... print post.title
Djangohead
FooBar
我强烈推荐The Django Tutorial,这将完成所有这些。