Zor*_*gan 3 python django pagination
分页代码:
try:
page = paginator.page(page_number)
print(page.object_list)
Run Code Online (Sandbox Code Playgroud)
所以以下输出是print(page.object_list)我分页的结果:
<QuerySet [<Comment: I can't believe it's happeinig>, <Comment: Just trying to fill up the comments>, <Comment: Another one!>, <Comment: Evenmore noe>, <Comment: Something>, <Comment: Lol>, <Comment: Are comments showing up?>, <Comment: Great for the economy.>, <Comment: honestly>, <Comment: Even though the the onlyEven though the only one to udnertstnaf!>]>
<QuerySet [<Comment: Yeah it's crazy how fast aswell. It's very awesome how it's doing atm. >]>
<QuerySet []>
<QuerySet [<Comment: Sure>, <Comment: No worries>]>
<QuerySet []>
<QuerySet []>
<QuerySet [<Comment: attempt 2!>]>
<QuerySet [<Comment: Attempt 3!>]>
<QuerySet []>
<QuerySet [<Comment: 12>]>
<QuerySet []>
<QuerySet [<Comment: Somewhere?>]>
<QuerySet []>
<QuerySet [<Comment: lol>]>
<QuerySet []>
<QuerySet [<Comment: 12>]>
<QuerySet []>
Run Code Online (Sandbox Code Playgroud)
如您所见,我有空的查询集,这些导致我的代码出错。因此,我想遍历这些查询集并找出空的。我试图添加这个 for 循环:
for i in page.object_list:
if len(i) < 0:
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
TypeError at /news/11/
object of type 'Comment' has no len()
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
如果查询集为空,则尝试删除它:
try:
page = paginator.page(page_number)
if page.object_list:
pass
else:
page.delete()
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError at /news/11/
'CustomPage' object has no attribute 'delete'
Run Code Online (Sandbox Code Playgroud)
您可以使用if子句直接测试 QuerySet 。这将导致 QuerySet 被评估。空查询集(或空列表)是假的:
page = paginator.page(page_number)
if page.object_list:
...
Run Code Online (Sandbox Code Playgroud)
如果您想在 QuerySet 上进行迭代,则无需测试是否为空。只需使用for子句:
for obj in page.object_list: # empty QuerySet gets zero iterations
...
Run Code Online (Sandbox Code Playgroud)