class ProxyField:
def __init__(self, to):
self.to_object, self.to_object_field = to.split('.')
def __get__(self, instance, owner):
if instance is None:
return self
return getattr(self.delegate(instance), self.to_object_field)
def delegate(self, instance):
return getattr(instance, self.to_object)