Disons que je suivre des cours ORM (champs supprimé pour simplifier):héritage Django ORM avec le champ ManyToMany
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")
Quand j'ajouter quelques animaux à mon zoo:
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()
... I s'attendre résultat suivant:
Je suis un chat: miaou, je suis un chien: wuff
mais au contraire, tous les J'ai les instances de l'objet Animal général, incapable de dire autre chose que "?".
Comment obtenir l'héritage vrai objet et le polymorphisme ultérieur lorsque l'objet est récupéré à partir de DB?
Votre code est trop simplifié pour être lu. –