如何在Django中不通过子类化克隆/修改模型
大家好。我正在尝试在Django中创建一个模型,这个模型是基于另一个模型的,但不想让它成为子类,也不想和那个模型有数据库关系。我的原始模型大致是这样的:它存储一些带有日期/时间戳的数据。
class Entry(Model):
data1 = FloatField()
data2 = FloatField()
entered = DateTimeField()
我还想对这些条目的数字数据进行每日汇总,使用一个几乎相同的模型。对于DailyAvg()这个变体,我们将使用DateField()而不是DateTimeField(),因为每天只会有一个平均值:
class EntryDailyAvg(Model):
data1 = FloatField()
data2 = FloatField()
entered = DateField()
所以问题来了:会有很多这样的数据类需要在数据库中存储相应的每日平均模型,而它们的定义几乎是一样的。我可以为每个数据类重新输入一个相应的DailyAvg()类的定义,但这似乎违反了“不要重复自己”(DRY)原则,而且也非常麻烦。我也不能让EntryDailyAvg继承Entry,因为每次我保存一个新的EntryDailyAvg时,Django都会保存一个新的Entry基础。
有没有办法自动(或者说神奇地)生成DailyAvg()类呢?
提前谢谢大家!
1 个回答
2
如果你创建一个叫做 AbstractEntry 的类,把所有关于数据1的内容放进去,然后再创建两个子类:Entry 和 EntryDailyAvg,这样会怎么样呢?
可以查看文档,了解如何告诉 Django 某个类是抽象类的信息。