在Python中覆盖“剩余元素被截断”

28 投票
3 回答
18770 浏览
提问于 2025-04-16 01:18

我在Django的Python命令行里做一些查询,但是结果总是被截断了。我看到提示信息说“剩余元素被截断”。我该怎么才能看到所有的结果呢?或者,我怎么才能把结果写到一个文件里呢?

3 个回答

2

假设你的查询是:

>>> Foo.objects.all()

那你可以试试:

>>> for x in Foo.objects.all(): print x

或者如果你想把它们保存到一个文件里:

>>> f = open('your_filename','w')
>>> for x in Foo.objects.all(): f.write(u'%s\n' % x)
>>> f.close() 
3

这个最上面的回答在2020年对我来说是有错误的:

Error in argument: '(MyModel.objects.all())'

对我有效的方法是把查询结果当成一个列表来遍历:

[i for i in MyModel.objects.all()]
67

当你在命令行中直接输出查询集时,它会自动处理这些内容,这个过程实际上是调用了repr这个函数。如果你用list来处理查询集,那它就会把所有的内容都输出出来:

list(MyModel.objects.all())

需要注意的是,你在代码中不需要这样做,这只是为了在命令行中显示结果。当然,如果你的模型有很多条记录,使用这种方式要小心。

撰写回答