如何在Django中不通过子类化克隆/修改模型

0 投票
1 回答
613 浏览
提问于 2025-04-15 13:38

大家好。我正在尝试在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 某个类是抽象类的信息。

撰写回答