2010-12-11 3 views
0

모델 데이터를 수정할 때마다 개체의 새 인스턴스가 만들어지고 참조가 이전 인스턴스에 추가되어 사실, 이전 객체는 새로운 객체에 의해 사용되지 않습니다.버전이 지정된 모델

class VersionedModel(models.Model): 
    # points to initial reference 
    initial = models.ForeignKey(VersionedModel, verbose_name=_(u"initial"), related_name="versions", editable=False) 
    # ought to be a one-one reference 
    deprecated_by = models.ForeignKey(VersionedModel, ...) 
    version = models.IntegerField(...) 

    class Meta: 
     abstract = True 

    def save(self): 
     prev_pk = self.pk 
     self.pk = None 
     prev = self.objects.get(pk=prev_pk) 
     prev.deprecated_by = self 
     super(self.__class__), self).save() 

뭔가이 작품을 경우에도 그것을 할 수있는 매우 형편 방법은 아마 저를 알려줍니다 : I가 생각하는 것이 신속하고 더러운 순간 뭔가

는 다음과 같이 보인다. 그런 일을하는 "우아한"솔루션이 있습니까?

감사합니다.

+1

개체를 변경하는 경우 관계를 가리키는 경우 문제가 발생합니다 .... –

답변

1

아마도 django-reversion을 봐야합니다.

+0

제거하거나 새 필드를 추가 할 때 매우 어려움 = ( – Vladislav

관련 문제