【发布时间】:2011-05-08 01:25:28
【问题描述】:
假设我有以下 ORM 类(删除字段以简化):
class Animal(models.Model):
say = "?"
def say_something(self):
return self.say
class Cat(Animal):
self.say = "I'm a cat: miaow"
class Dog(Animal):
self.say = "I'm a dog: wuff"
class Animals(models.Model):
my_zoo = models.ManyToManyField("Animal")
当我将一些动物添加到我的动物园时:
cat = Cat()
cat.save()
dog = Dog()
dog.save()
animals.my_zoo.add(cat)
animals.my_zoo.add(dog)
for animal in animals.my_zoo.all():
print animal.say_something()
...我希望得到以下结果:
我是猫:喵呜,我是狗:呜呜呜
但相反,我所拥有的只是一般 Animal 对象的实例,除了“?”之外什么都不能说。
从db中获取对象时如何实现真正的对象继承和后期的多态性?
【问题讨论】:
-
您的代码过于简单,无法分辨。
标签: django orm inheritance