Меня все еще немного смущает отношение моделей Proxy к их суперклассам в django. Теперь у меня вопрос: как мне получить экземпляр модели Proxy из уже полученного экземпляра суперкласса?
Итак, допустим, у меня есть:
class Animal(models.Model):
type = models.CharField(max_length=20)
name = models.CharField(max_length=40)
class Dog(Animal):
class Meta:
proxy = True
def make_noise(self):
print "Woof Woof"
Class Cat(Animal):
class Meta:
proxy = True
def make_noise(self):
print "Meow Meow"
animals = Animal.objects.all()
for animal in animals:
if (animal.type == "cat"):
animal_proxy = # make me a cat
elif (animal.type == "dog"):
animal_proxy = # make me a dog
animal_proxy.make_noise()
ОК. Итак .. Что входит в "# сделай меня котом", который не требует обратного запроса к базе данных, например:
animal_proxy = Cat.objects.get(id=animal.id)
Есть ли простой способ создать экземпляр Cat из экземпляра Animal, который, как я знаю, кот?