我的模型组织如下。
class Animal(models.Model):
  first_name = models.CharField(max_length=128, unique=True)
class Cat(Animal):
  def make_sound(self):
    return "mreooooow"
class Dog(Animal):
  def make_sound(self):
    return "AARF!"
class EvilMonkey(Animal):
  def make_sound(self):
    return "muahahaha ..."
如您所见,各种动物都继承自一个名为“Animal”的类。每个子类也有一个方法make_sound。
但是,在我看来,当我调用make_sound通用动物时,Django 抱怨Animal对象没有方法调用make_sound,这是有道理的,因为只有子类的对象Animal才有方法。
我可以以某种方式告诉 Django,我可以保证子类的所有对象Animal都具有该make_sound方法吗?通过Java接口之类的东西?我知道 Django 文档说“不允许“隐藏”字段名称”,但我觉得覆盖方法对于继承非常重要,因此 Django 应该支持它。
我不想说得特别具体,my_animal.cat.make_sound()因为我想笼统地对待动物对象。