我有一个10万+行的模型。 我想给它做点手术,但是不能一气呵成,因为尺寸的问题。 所以,我想到了这样使用Paginator:
def fun():
paginator = Paginator(Model.objects.filter(**some_filter), 10000)
for page_no in paginator.page_range:
page = paginator.get_page(page_no)
queryset = page.object_list
# Do some operation on queryset
# Check if new records are added in the Model, (if yes, then do the operation on new records
only)
代码中的最后一条注释说,在运行上述代码时,如果添加了新记录(因为这是一个活动应用程序),那么我们也必须对这些记录执行相同的操作。
所以我的问题是,我如何获得剩余的(新的)记录,只运行相同的代码?
很简单。 如果您的模型中有一个datetime字段,那么您可以在“for”中的最后一个项上保留datetime字段在变量中,然后在“for”之后检查是否有任何对象的datetime字段大于最后一个项的datetime字段,只对它们执行操作。 这样可以防止对一个对象执行两次操作。
注意:如果您的对象没有日期时间字段,请向其添加。