比方说,我有以下的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