在Django中,是否可以继承多个抽象基类?

3
我正在学习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) 除非您想让事件分别具有所有数据成员和所有基类的功能,否则您的事件不应该继承自演讲者等。相反,它应该具有到每个基类实例的 ForeignKey(或其他类似字段)。当您需要收集数据时,请使用组合;只有在需要自定义行为时才使用继承。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接