2013-04-08 1 views
0

저는 Django와 South를 사용하여 Datamigration을 실행하는 중입니다. Schemamigration을 사용하여 모델에 새 필드를 이미 추가했으며 이제는 해당 모델의 모든 객체에 대한 필드를 채우는 중입니다.Django 1.4를 사용하면 어떻게 수정 된 필드를 자동으로 업데이트하지 않고도 TimeStampedModel 객체를 저장할 수 있습니까?

데이터 마이 그 레이션에서 내 개체의 save() 메서드를 호출하면 각 개체에있는 수정 된 필드가 자동으로 업데이트되고 모든 개체가 동일한 수정 된 날짜로 끝나는 것이 문제입니다. 가능하다면 데이터 마이그레이션 전의 수정 날짜를 보존하고 싶습니다.

현재 내 datamigration은 다음과 같습니다

class Migration(DataMigration): 

    def forwards(self, orm): 
     for w in orm.Writer.objects.all(): 
      w.type = 'outside' 
      if w.managed_by != None: 
       if w.managed_by.writer != None: 
        if w.id == w.managed_by.writer.id: 
         w.type = 'client' 
      w.save() 

에만 유형 필드의 값을 저장하는 방법은 수정 날짜를 업데이트하지 않고 있나요?

답변

0

모델의 쿼리 세트에서 사용할 수있는 update() 메서드를 사용하여 원하는 필드 만 변경하도록 개체를 업데이트 할 수 있습니다 (자세한 내용은 https://docs.djangoproject.com/en/1.4/topics/db/queries/#updating-multiple-objects-at-once 참조).

orm.Writer.objects.filter(pk=w.pk).update(type='client') 
: 개체 만 당신의 PK로 제한함으로써 단일 개체를 대상으로 여러 개체에 대해이 기능을 사용하여 문서 참조, 업데이트 쿼리를 필터링 할 수 있지만

로 작업