在django中从较大的查询集中排除查询集而不访问数据库

时间:2017-03-02 19:35:38

标签: python django

我有一个模型的所有对象的查询集。迭代对象,我正在删除列中具有值重复的更新行。因此,无需再次访问数据库,我想从更大的查询集中删除更新的行。

最有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可能需要提供有关特定用例的更多信息,但一般来说,Django会延迟对QuerySets的评估,直到实际需要它们为止。如果您能够独立于较大的QuerySet构建排除集的QuerySet,则可以调用.exclude()方法并生成一个大查询而不是两个较小的查询。例如:

excluded_set = Model.objects.filter(...)
large_set = Model.objects.filter().exclude(id__in=excluded_set)