google.appengine.ext.db.ComputedProperty

Property used for creating properties derived from other values.

Inherits From: Property, expected_type

Certain attributes should never be set by users but automatically calculated at run-time from other values of the same entity. These values are implemented as persistent properties because they provide useful search keys.

A computed property behaves the same as normal properties except that you may not set values on them. Attempting to do so raises db.DerivedPropertyError which db.Model knows to ignore during entity loading time. Whenever getattr is used for the property the value is recalculated. This happens when the model calls get_value_for_datastore on the property.

Example:

import string

class Person(Model):

name = StringProperty(required=True)

@db.ComputedProperty def lower_case_name(self): return self.name.lower()

Find all people regardless of case used in name.

Person.gql('WHERE lower_case_name=:1' % name_to_search_for.lower())

value_function Callable f(model_instance) -> value used to derive persistent property value for storage in datastore.
indexed Whether or not the attribute should be indexed.

Methods

datastore_type

View source

Deprecated backwards-compatible accessor method for self.data_type.

default_value

View source

Default value for unassigned values.

Returns
Default value as provided by __init__(default).

empty

View source

Determine if value is empty in the context of this property.

For most kinds, this is equivalent to "not value", but for kinds like bool, the test is more subtle, so subclasses can override this method if necessary.

Args
value Value to validate against this Property.

Returns
True if this value is considered empty in the context of this Property type, otherwise False.

get_updated_value_for_datastore

View source

Determine new value for auto-updated property.

Some properies (e.g. DateTimeProperty, UserProperty) optionally update their value on every put(). This call must return the new desired value for such properties. For all other properties, this call must return AUTO_UPDATE_UNCHANGED.

Args
model_instance Instance to get new value for.

Returns
Datastore representation of the new model value in a form that is appropriate for storing in the datastore, or AUTO_UPDATE_UNCHANGED.

get_value_for_datastore

View source

Datastore representation of this property.

Looks for this property in the given model instance, and returns the proper datastore representation of the value that can be stored in a datastore entity. Most critically, it will fetch the datastore key value for reference properties.

Some properies (e.g. DateTimeProperty, UserProperty) optionally update their value on every put(). This call must return the current value for such properties (get_updated_value_for_datastore returns the new value).

Args
model_instance Instance to fetch datastore value from.

Returns
Datastore representation of the model value in a form that is appropriate for storing in the datastore.

make_value_from_datastore

View source

Native representation of this property.

Given a value retrieved from a datastore entity, return a value, possibly converted, to be stored on the model instance. Usually this returns the value unchanged, but a property class may override this when it uses a different datatype on the model instance than on the entity.

This API is not quite symmetric with get_value_for_datastore(), because the model instance on which to store the converted value may not exist yet -- we may be collecting values to be passed to a model constructor.

Args
value Value retrieved from the datastore entity.

Returns
The value converted for use as a model instance attribute.

make_value_from_datastore_index_value

View source

validate

View source

Assert that provided value is compatible with this property.

Args
value Value to validate against this Property.

Returns
A valid value, either the input unchanged or adapted to the required type.

Raises
BadValueError if the value is not appropriate for this property in any way.

creation_counter 2