English ▼
Skip to page content Skip to main navigation
e.g. "templates" or "datastore"

# The Field Class

#### Experimental!

ProtoRPC is an experimental, innovative, and rapidly changing new feature for App Engine. Unfortunately, being on the bleeding edge means that we may make backwards-incompatible changes to ProtoRPC. We will inform the community when this feature is no longer experimental.

The Field class is the base class for all fields defined on messages. This class cannot be extended by developers.

`Field` is provided by the `protorpc.messages` module.

- Field()
- Class Properties
  - default()
- Instance Methods
  - validate()
  - validate_default_element()
  - validate_default()
  - message_definition()

## Constructor

The constructor of the Field class is defined as follows:

class Field (message_type, number, [required=False | repeated=False], variant=None, default=None)

  Initializes an Field instance. Each sub-class of Field must define the following:

  `VARIANTS`
    Set of variant types accepted by that field.
  `DEFAULT_VARIANT`
    Default variant type if not specified in constructor.

  Arguments:

  number
    Number of the field. Must be unique per message class.
  required=False
    Whether or not this field is required. Mutually exclusive with the `repeated` argument; do not specify `repeated` if you use `required`.
  repeated=False
    Whether or not this field is repeated. Mutually exclusive with the `required` argument; do not specify `required=True` if you also use `repeated=True`.
  variant=None
    Provides additional encoding information that is mainly used by protocol buffers. These variants map to the Type values in `descriptor.proto`. Best practice is to use default values, but you can specify values as 32-bit, 64-bit, unsigned, etc.
  default=None
    Default value for the field if not found in the underlying request.

    Note: Default values are not permitted for repeated fields or message fields.

  Raises the following exceptions:

  - InvalidVariantError when invalid variant for field is provided.
  - InvalidDefaultError when invalid default for field is provided.
  - FieldDefinitionError when invalid number provided or mutually exclusive fields are used.
  - InvalidNumberError when the field number is out of range or reserved.

## Class Property

The FieldList class has one property:

default()
  The default value for the field.

## Instance Methods

FieldList instances have the following methods:

validate(value)
  Validates a value assigned to a field.

  Arguments:

  value
    The value to evaluate.

  Raises a ValidationError if the value is not an expected type.

validate_default_element(value)

  Validates a value assigned to a default field. Specific to a single element.

  Some fields may allow for delayed resolution of default types necessary in the case of circular definition references. In this case, the default value might be a placeholder that is resolved when needed after all the message classes are defined.

  Arguments:

  value
    Default value to validate.

  Raises a ValidationError if the value is not an expected type.

validate_default(value)

  Validates that a field's default value.

  Arguments:

  value
    Default value to validate.

  Raises a ValidationError if the value is not an expected type.

message_definition()

  Gets a message definition that contains this Field definition. Returns a definition for the Message object that contains the Field. Returns None if Field is defined outside of a message class.

  Raises a ValidationError if the value is not an expected type.