在Django中可以继承多个抽象基类吗?
我正在尝试为我的校园创建一个简单的活动日程安排工具,这是我学习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
(或者其他类似的字段)来指向这些类的实例。当你需要把数据聚集在一起时,应该使用组合;只有在你需要定制行为时,才应该使用继承。