我正在尝试为我的校园创建一个简单的事件调度程序,作为练习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
(我也不了解所有数据库技术。)
那么,是否可以创建一个继承自多个抽象类的单个类?
答案 0 :(得分:3)
(a)您可以拥有多个抽象基类。
(b)如果您只需要收集方法,那么您不必将这些基类作为Model
的子类。
(c)您的活动不应继承扬声器等,除非您希望它单独拥有所有数据成员以及这些基类的所有功能。相反,它应该具有ForeignKey
(或其他类似字段之一)到每个类的实例。 当您需要一起收集数据时,您应该使用合成;您只应在需要自定义行为时使用继承。