Я пытался понять это некоторое время, но без особого успеха.Я пытаюсь написать фабрику классов, которая хорошо работает с ORM Джанго, чтобы я мог взять схему модели следующим образом:
Product
SubclassOfProduct0
SubclassOfProduct1
....
Чтобы работать так:
Product.objects.get(pk=7) // returns the result of SubclassOfProduct0(pk=7)
Product.objects.filter(propname="w00t") // returns a QuerySet of Product objects
Так что я думал примерно так:
class ProductManager(models.Manager):
def get(self, *a, **kwa):
# Get the id from Products (somehow)
if product.type == Product.TYPE_SUBCLASS0:
return ProductSubClass0.objects.get(pk=kwa["pk"])
class Product(models.Model):
TYPE_SUBCLASS0 = 0
TYPE_SUBCLASS1 = 1
objects = ProductManager()
def __init__(self, *a, **kwa):
self.set_defaults()
def set_defaults(self):
pass
class ProductSubClass0(models.Model):
def set_defaults(self):
self.type == self.TYPE_SUBCLASS0
... но я не знаю, как это сделать "правильно".Может кто-нибудь пролить свет здесь?