如何在没有子类化的情况下克隆/改变Django中的模型

时间:2009-08-17 02:53:09

标签: python django django-models dry aggregation

“好吧,所有。我正在尝试在Django中创建一个模型 - 但不是子类化或与DB关系 - 另一个模型。我的原始模型看起来像这样:它存储一些带有日期/时间戳的数据。

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

我还想每天使用几乎相同的模型聚合每个条目的数字数据。对于DailyAvg()变体,我们将使用DateField()而不是DateTimeField(),因为每天只有一个平均值:

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

因此问题:很多这些数据类需要存储在DB中的相应日常平均模型,并且定义几乎相同。我可以为每个数据类重新键入一个等效的DailyAvg()类的定义,但这似乎违反了DRY,并且也是一个巨大的痛苦。我也不能拥有EntryDailyAvg子类Entry,因为Django每次保存一个新的EntryDailyAvg时都会保存一个新的Entry。

有没有办法自动(-magically?)生成DailyAvg()类?

提前致谢!

1 个答案:

答案 0 :(得分:2)

如果您创建一个包含所有data1内容的AbstractEntry类,然后是两个子类:Entry和EntryDailyAvg。

检查文档,了解如何告诉django一个类是抽象的。