【问题标题】:Is it possible in Django to inherit multiple abstract base classes?在 Django 中是否可以继承多个抽象基类?
【发布时间】:2012-01-19 11:30:47
【问题描述】:

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

这是我的第一种方法。分别为地点、演讲者、日期创建抽象类,然后将它们全部继承到一个名为 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

(我也不了解所有数据库技术。)

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2013-12-24
      相关资源
      最近更新 更多