1

我有一个模型,在 save 方法中有一些自定义。

def SomeModel(models.Model):
    def save(self, *args, **kwargs):
        if not kwargs.pop('skip_expensive_processing', False):
            do_expensice_processing()
        return super(SomeModel, self).save(*args, **kwargs)

基本上,每当调用 save 方法时,我都希望执行一些昂贵的过程

但是当一起做一堆保存(大量导入)时,我不想对每次保存都进行昂贵的处理。在保存所有对象后,我想执行一次昂贵的过程。

在批量保存的情况下,对象是通过ModelForm. 我需要找到一些方法来修改表单,以便当表单调用 save 方法时SomeModel,它会传递该skip_expensive_processing关键字 arg。我该怎么做呢?

我浏览了该ModelForm.save()方法的源代码,但它似乎并没有以一种过于直接的方式调用模型保存方法......

4

1 回答 1

0

您可能不需要覆盖模型表单的save方法。您应该能够通过commit=True,然后根本不会调用模型保存。

于 2012-09-19T08:06:26.103 回答