在Django中可以继承多个抽象基类吗?

3 投票
1 回答
1189 浏览
提问于 2025-04-17 10:36

我正在尝试为我的校园创建一个简单的活动日程安排工具,这是我学习Django时的一个练习。我想定义一个活动,这个活动可以通过一组场地讲者日期来唯一识别。我的第一次尝试是使用多个抽象基类的继承来实现这个目标。由于我还是编程初学者,所以不太确定这样做是否正确。有没有更好的方法来实现同样的事情呢?

这是我的第一次尝试。我为场地、讲者和日期各创建了一个抽象类,然后把它们都继承到一个叫做活动的类里。我想这样做是因为同样的场地和讲者会被反复使用。

另一种方法是这样的,但似乎不太适合那些会被多次使用的场地和讲者:

class Event(models.Model):
    speaker=models.CharField(max_length=100)
    venue=models.CharField(max_length=400)
        date=models.DateTimeField('Event begins at')
    def __unicode__(self):
        return self.question

(我对所有的数据库技术也不是很了解。)

那么,是否可以创建一个单一的类来继承多个抽象类呢?

1 个回答

3

(a) 你可以有多个抽象基类。

(b) 如果你只是想收集一些方法,那么这些基类不一定要是Model的子类。

(c) 你的事件不应该直接继承自像speaker这样的类,除非你想让它拥有那些基类的所有数据和功能。相反,它应该有一个ForeignKey(或者其他类似的字段)来指向这些类的实例。当你需要把数据聚集在一起时,应该使用组合;只有在你需要定制行为时,才应该使用继承。

撰写回答