如何在for循环中排除查询集中的项目?

时间:2015-12-23 17:26:43

标签: django django-models django-queryset

我想删除

Result = Model.objects.filter(condition - satisfied... etc.)

然后我遍历查询集中的每个对象,并在我查看代码时将其删除:

For a in Results:

### code ###

    Results.exclude(id=a.id)

无论我如何排除,结果对象都不会改变。有没有办法'#pop; pop"当我遍历查询集时,它们是什么?

2 个答案:

答案 0 :(得分:4)

以这种方式更改代码:

For a in Results:

### code ###

    Results = Results.exclude(id=a.id)

因为queryset.exclude()返回一个新的查询集,而不更改现有的。

答案 1 :(得分:0)

但是您会为每个循环执行数据库查询,尽管您每次循环都调用.exclude()

如果只想为每个循环删除对象,则可以使用:

new_list = list(results)
for a in results:  
    ### code ###
    new_list.remove(a)