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

时间:2012-01-19 11:30:47

标签: python django django-models abstract-class multiple-inheritance

我正在尝试为我的校园创建一个简单的事件调度程序,作为练习Django的练习。我想定义一个事件,它可以唯一地标识为一组场地扬声器 date 。我的第一次尝试是使用多个抽象基类的继承来做到这一点。我仍然是编码的初学者,所以我不确定我是否以正确的方式做到了。是否有更好的方法做同样的事情?

这是我的第一个方法。为场地,演讲者,日期创建抽象类,然后将它们全部继承到一个名为event的类中。我想这样做,因为相同的场地和扬声器将被反复使用。

另一种方法是这样,但它似乎并不适合多次重复使用的场地和扬声器:

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 个答案:

答案 0 :(得分:3)

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

(b)如果您只需要收集方法,那么您不必将这些基类作为Model的子类。

(c)您的活动不应继承扬声器等,除非您希望它单独拥有所有数据成员以及这些基类的所有功能。相反,它应该具有ForeignKey(或其他类似字段之一)到每个类的实例。 当您需要一起收集数据时,您应该使用合成;您只应在需要自定义行为时使用继承。