Tôi vẫn còn một chút nhầm lẫn về mối quan hệ của mô hình Proxy cho Superclasses của họ trong django. Câu hỏi của tôi bây giờ là làm thế nào để có được một thể hiện của một mô hình Proxy từ một thể hiện đã được truy xuất của Superclass?bằng cách sử dụng django, làm thế nào để tôi xây dựng một thể hiện đối tượng proxy từ một cá thể đối tượng superclass?
Vì vậy, cho phép nói rằng tôi có:
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()
OK. Vì vậy, .. gì đi vào "# làm cho tôi một con mèo" mà không đòi hỏi một truy vấn trở lại cơ sở dữ liệu như:
animal_proxy = Cat.objects.get(id=animal.id)
Có cách nào đơn giản để tạo một thể hiện của Cát từ một thể hiện của động vật mà tôi biết là một con mèo?
Tôi biết rằng tôi sẽ chống lại hạt của Django. Tôi làm điều này bởi vì Django không cho phép tôi làm những gì tôi muốn, đó là có được một danh sách các đối tượng được lưu trữ trong cùng một bảng nhưng trong đó có các thuộc tính khác nhau mà không thực sự chuỗi kết quả với nhau. Tôi đã xây dựng một trình quản lý nhận biết kiểu, nhưng ở cấp độ siêu lớp và bây giờ tôi chỉ cần 'bỏ' trả về các cá thể đối tượng siêu lớp để trở thành các đối tượng lớp proxy. Có cách nào để làm điều này không? –
Trên thực tế, tôi đã làm điều này, nhưng tôi hiện đang thực hiện một cuộc gọi trở lại cơ sở dữ liệu theo: animal_proxy = Cat.objects.get (id = animal.id) Tôi muốn một cái gì đó giống như animal_proxy = (Cat) động vật. tôi biết có phải là thủ đoạn python mà có thể làm điều này cho tôi. –
@Bubba: Xem câu hỏi này. Các câu trả lời có thể được bạn quan tâm. http://stackoverflow.com/questions/2218867/right-way-to-return-proxy-model-instance-from-a-base-model-instance-in-django –