我有一个模型的所有对象的查询集。迭代对象,我正在删除列中具有值重复的更新行。因此,无需再次访问数据库,我想从更大的查询集中删除更新的行。
最有效的方法是什么?
答案 0 :(得分:0)
您可能需要提供有关特定用例的更多信息,但一般来说,Django会延迟对QuerySets的评估,直到实际需要它们为止。如果您能够独立于较大的QuerySet构建排除集的QuerySet,则可以调用.exclude()
方法并生成一个大查询而不是两个较小的查询。例如:
excluded_set = Model.objects.filter(...)
large_set = Model.objects.filter().exclude(id__in=excluded_set)