2009-08-17 7 views
0

'Ello, all. 내가 장고에 모델을 만들려고 -하지만 서브 클래 싱 또는 DB 관계가 - 다른 모델을 기반으로. 내 원래 모델은 다음과 같습니다. 날짜/시간 스탬프가있는 일부 데이터를 저장합니다.하위 클래스를 사용하지 않고 Django에서 모델을 복제/변형하는 방법

class Entry(Model): 
    data1 = FloatField() 
    data2 = FloatField() 
    entered = DateTimeField() 

거의 동일한 모델을 사용하여 매일 각 항목에 대한 숫자 데이터를 집계하고 싶습니다.

class EntryDailyAvg(Model): 
    data1 = FloatField() 
    data2 = FloatField() 
    entered = DateField() 

따라서 문제 : 많은있을거야에만 하루에 한 평균있을 것 같은 DailyAvg() 변형을 위해, 우리는 대신 DateTimeField()의)를하여 DateField를 (사용합니다 DB에 저장된 해당 일일 평균 모델이 필요하며 정의는 거의 동일합니다. 각 데이터 클래스에 해당하는 DailyAvg() 클래스의 정의를 다시 입력 할 수는 있지만 DRY를 위반하는 것으로 보이며 엉덩이에 큰 고통이됩니다. Django는 새로운 EntryDailyAvg를 저장할 때마다 새로운 엔트리베이스를 저장할 것이므로 EntryDailyAvg 서브 클래스 엔트리를 가질 수도 없습니다.

DailyAvg() 클래스를 자동으로 (- 마술?) 생성하는 방법이 있습니까?

미리 감사드립니다.

+0

그리고 '엔트리'를 하위 클래스로 분류하지 않으니까 ...? –

+0

사실 나는 어느 시점에서했는데, 당신이 자식 클래스를 저장할 때마다 부모 클래스의 인스턴스도 저장된다는 사실을 잊어 버렸다. 나는 여분의 Entry()가 어디서 왔는지 궁금해했다. DailyAvg()를 저장할 때마다 저장되고 있었기 때문에 Entry 테이블을 "오염시키는"일을하게되었다. –

답변

2

모든 data1 항목과 Entry 및 EntryDailyAvg의 두 가지 하위 클래스가있는 AbstractEntry 클래스를 만드는 경우 어떻게됩니까?

django에게 하나의 클래스가 추상임을 알리는 방법에 대한 문서를 확인하십시오.

+0

추상 클래스는 1.1에서 새로 도입 되었습니까? 그 생각을하지 않았다. 감사! –

관련 문제