我對django中代理模型與其超類的關係仍有點困惑。我現在的問題是,如何從已獲取的超類實例中獲取代理模型的實例?使用Django,我如何從超類對象實例構造代理對象實例?
因此,可以說我有:
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)
有一個簡單的方法來從動物的實例創建貓的實例我知道是一隻貓?
我知道我正在反對Django的穀物。我這樣做是因爲Django不讓我做我想做的事情,它獲取存儲在同一個表中但具有不同屬性而不實際鏈接在一起的對象的列表。我構建了一個類型感知管理器,但是在超類級別,現在我只需要將返回的超類對象實例「轉換」爲代理類對象。有沒有辦法做到這一點? – 2010-10-13 05:56:07
其實,我已經這樣做了,但我目前正在回呼數據庫,如下所示:animal_proxy = Cat.objects.get(id = animal.id)我需要類似animal_proxy =(Cat)動物的東西。我知道必須有可以爲我做到這一點的蟒蛇技巧。 – 2010-10-13 06:01:37
@Bubba:看到這個問題。你可能會感興趣的答案。 http://stackoverflow.com/questions/2218867/right-way-to-return-proxy-model-instance-from-a-base-model-instance-in-django – 2010-10-13 06:09:07