'Construct ReferenceProperty.
Args:
reference_class: Which model class this property references.
verbose_name: User friendly name of property.
collection_name: If provided, alternate name of collection on
reference_class to store back references.  Use this to allow
a Model to have multiple fields which refer to the same class.'

def __init__(self, reference_class=None, verbose_name=None, collection_name=None, **attrs):

    super(ReferenceProperty, self).__init__(verbose_name, **attrs)
    self.collection_name = collection_name
    if (reference_class is None):
        reference_class = Model
    if (not ((isinstance(reference_class, type) and issubclass(reference_class, Model)) or (reference_class is _SELF_REFERENCE))):
        raise KindError('reference_class    must    be    Model    or    _SELF_REFERENCE')
    self.reference_class = self.data_type = reference_class
