我正在考虑让我的所有模型继承自db.Expando类,以便支持松散的非规范化协议,从而也可以在拥有类上设置db.ReferenceProperty引用的模型的选定属性.
class ImgModel(db.Expando):
height = db.IntegerProperty()
width = db.IntegerProperty()
url = db.StringProperty()
img_data = db.BlobReferenceProperty()
class company(db.Expando):
logo = db.DenormalizedImgProp(prefix=u'logo')
class DenormalizedImgProp(db.ReferenceProperty):
denorm_attrs = [u'height', u'width', u'url']
def __init__(self,prefix,verbose_name,collection_name,**attrs):
super(DenormalizedImgProp, self).__init__(ImgModel,verbose_name,collection_name,**attrs)
self.denorm_field_prefix = prefix
def __set__(self, model_instance, value):
super(DenormalizedImgProp, self).__set__(model_instance, value)
for attr in self.denorm_attrs:
setattr(model_instance, u'%s_%s' %
(self.denorm_field_prefix, attr),value)
Run Code Online (Sandbox Code Playgroud)
让所有模型继承自Expando类是否有任何性能缺陷?我知道更多的检查是必要的,以解释一些特质,但我真的只是感兴趣,这是否从根本上是可接受的.