2012-09-19 4 views
1

저장 메소드에 일부 사용자 정의가있는 모델이 있습니다. 저장 메소드가 호출되는 때마다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) 

기본적으로, 좀 비싼 프로세스가

을 실행하고 싶지만 무리 A를 할 때하는 것은 함께 (대량 가져 오기), 내가하고 싶지 않아 저장 각 저장시 값 비싼 처리. 모든 물체를 구한 후에 비싼 과정을 한 번하고 싶습니다.

대용량 저장의 경우 개체는 ModelForm을 통해 생성됩니다. 폼을 수정하여 양식이 SomeModel의 save 메서드를 호출 할 때 skip_expensive_processing 키워드 arg를 처리하도록하는 방법을 찾아야합니다. 어떻게해야합니까?

나는 ModelForm.save() 방법의 테 소스를 통해 loked하지만 너무 정직하게 저장 방법 모델을 caling하지 않는 것 ...

답변

0

당신은 아마도 modelform 년대를 오버라이드 (override) 할 필요가 없습니다 save 방법. commit=True을 전달하면 모델 저장이 전혀 호출되지 않습니다.

관련 문제