2012-09-18 4 views
0

나는 목록 응용 프로그램을 가지고있다. 완료된 작업 내역을 유지하려면 작업이 완료에서 완료되지 않을 때마다 작업의 새 인스턴스를 만들고 싶습니다. 따라서 나는 행동이 완료 될 때마다 사본을 얻을 것이다. 작업이 완료되지 않은 완전한에서가는 경우, 작업 후 자신의 deepcopy을 만들고 저장하는 방법에 위의 코드에서 django 모델 내에서 함수 호출

class Action(models.Model): 
    name = models.CharField("Action Name", max_length=200) 
    complete = models.BooleanField(default=False, verbose_name="Complete?") 

    # And some other attributes 

    # Cache initial version of record to determine before/after differences 
    def __init__(self, *args, **kw): 
     cached_vars = self.__dict__ 
     super(Action, self).__init__(*args, **kw) 
     var_cache = {} 
     for var in cached_vars: 
      var_cache[var] = getattr(self,var) 
     self.var_cache = var_cache 

    def remove_attrs(self): 
     self.complete = True 
     #Remove some other attributes 

    def save(self, **kw): 
     if self.complete: 
      # Do some stuff 
     else: 

      if self.var_cache['complete'] != getattr(self,'complete') and self.id is not None: 
       new_obj = deepcopy(self) 
       new_obj.id = None 
       new_obj.save() 

       remove_attrs(self) 

이있다, 예를 들어 (일부의 속성 값을 변경해야 동작을 다시 발생시키는 속성입니다.이 기능을 해제해야합니다. 그렇지 않으면 지속적으로 완료 상태에서 완료되지 않은 상태로 전환하려고 시도합니다.

remove_attrs (self)를 호출하면 제대로 작동하지 않습니다. def remove_attrs (self)를 어떻게 호출합니까?

답변

0

메소드이므로 객체에서 호출하십시오.

self.remove_attrs() 
관련 문제