通过ModelForm传递自定义保存参数

时间:2012-09-19 05:08:17

标签: python django django-forms

我的模型在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创建对象。我需要找到一些方法来修改表单,以便当表单在SomeModel上调用save方法时,它会使用skip_expensive_processing关键字arg。我该怎么做?

我通过ModelForm.save()方法的te来源,但它似乎没有以过于直接的方式调用模型保存方法......

1 个答案:

答案 0 :(得分:0)

您可能不需要覆盖modelform的save方法。您应该只能传递commit=True,然后根本不会调用模型保存。