2012-09-19 51 views
1

我有一個在save方法中有一些自定義的模型。通過ModelForm傳遞自定義保存參數

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) 

基本上,只要保存方法被調用,我想執行

一些昂貴的過程,但做了一束時節省在一起(一個大衆進口),我不想做昂貴的處理每個保存。在保存所有對象後,我想要做一次昂貴的過程。

在批量保存的情況下,通過ModelForm創建對象。我需要找到一些方法來修改表單,以便當表單調用SomeModel上的保存方法時,它將基於skip_expensive_processing關鍵字arg。我該怎麼做呢?

我通過ModelForm.save()法德源loked,但它似乎並沒有被caling模型保存方法過於直接的方式......

回答

0

你可能並不需要覆蓋的ModelForm的save方法。你應該能夠通過commit=True,然後模型保存將不會被調用。