比方說,我有以下的ORM類(字段中刪除,以簡化):與多對多場Django的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()
...我所期望的結果如下:
我是一隻貓:喵的,我是狗:wuff
而是所有我得到的是一般Animal對象的實例,除了「?」之外別無他法。
如何從db中retreived對象時實現真正的對象繼承和後來的多態?
您的代碼太簡單了,無法分辨。 – 2010-11-10 18:43:40