0
내 모델에서는 마지막 데이터베이스 수정에 대한 정보를 저장하는 추상 기본 클래스를 만들었습니다. 이렇게하려면 메서드를 저장합니다. 여기서 정적 datetime 필드는 현재 시간으로 업데이트됩니다.
마지막 수정 시간을 가져 오려고하면 DeferredAttribute 객체가 반환되며, 발견 한 값을 가져 오는 유일한 방법은 인스턴스화 된 객체에서 해당 필드를 호출하는 것입니다. 그러나 데이터베이스의 모든 개체가 삭제되면이 방법으로 값을 읽을 수 없습니다.추상 클래스 정적 필드 값 가져 오기
class Timestamp(models.Model):
modified = models.DateTimeField(null=True)
def save(self, *args, **kwargs):
Timestamp.modified = timezone.now()
super(Timestamp, self).save(*args, **kwargs)
class Meta:
abstract = True
class Node(Timestamp):
latitude = models.FloatField(default=0.0)
longitude = models.FloatField(default=0.0)
# ...
# few more subclasses of Timestamp
파생 클래스 객체를하지 않고 수정 필드 값을 얻을 수있는 방법이 있나요?
편집 :
고정 필드에 데이터를 저장할 수없는 것처럼 보이므로 수정 된 변수는 데이터베이스에 절대로 저장되지 않습니다. 그런 경우 나는 McAbra의 대답을 따를 것입니다.
당신에게 "연기 속성을"줄 것이다 거기에 아무것도 여기. 하지만 save 메소드에서'self.modified'를 설정해야합니다. –
@Daniel 데이터베이스의 모든 개체가 자체 수정 된 필드를 갖지 않을까요? 대신 전체 데이터베이스에서 수행 된 최신 변경 시간을 저장하는 타임 스탬프가 하나만 필요합니다. – tomwyr
이제 당신이하려는 일을 정말로 이해하지 못합니다. 데이터베이스에 저장하지 않고 어떻게 가치를 유지할 수 있습니까? 서버 프로세스를 다시 시작하면 어떻게됩니까? –