pydent.relationships.HasOne

class pydent.relationships.HasOne(nested, attr=None, ref=None, callback=None, callback_kwargs=None, **kwargs)[source]

Bases: pydent.relationships.One

HasOne initializer. Uses the “get_one_generic” callback and automatically assigns attribute as in the following:

# equiv. to 'lambda self: self.sample_type_id.'
model="SampleType", attr="id"
Parameters
  • nested (basestring) – model name of the target model

  • attr (basestring) – attribute to append underscored model name

__init__(nested, attr=None, ref=None, callback=None, callback_kwargs=None, **kwargs)[source]

HasOne initializer. Uses the “get_one_generic” callback and automatically assigns attribute as in the following:

# equiv. to 'lambda self: self.sample_type_id.'
model="SampleType", attr="id"
Parameters
  • nested (basestring) – model name of the target model

  • attr (basestring) – attribute to append underscored model name

Methods

__init__(nested[, attr, ref, callback, …])

HasOne initializer.

build_query(models)

Bundles all of the callback args for the models into a single query.

cache_result(owner, val)

deserialize(owner, val)

fullfill(owner[, cache, extra_args, …])

Calls the callback function using the owner object.

get_callback_args(owner[, extra_args])

Processes the callback args.

get_callback_kwargs(owner, extra_kwargs)

Processes the callback kwargs.

get_ref(instance)

register(name, objtype)

Registers the field to a nested class.

serialize(owner, obj)

set_data_key(key)

Attributes

QUERY_TYPE

SELF

ACCESSOR

alias of BaseRelationshipAccessor

_Callback__FLAGS

alias of pydent.marshaller.fields.Callback.__FLAGS

_get_ref_attr(nested=None, ref=None, attr=None)

Sets the ‘ref’ and ‘attr’ attributes. These attributes are used to defined parameters for.

pydent.marshaller.Relation classes.

For example:

relation # HasOne, HasMany, or HasManyGeneric, etc.
relation.set_ref(ref="parent_id")
relation.ref    # "parent_id"
relation.attr   # "id"

relation.set_ref(model="SampleType")
relation.ref   # "sample_type_id"
relation.attr  # "id"

relation.set_ref(attr="name", model="OperationType")
relation.ref   # "operation_type_name
relation.attr  # "name"
build_query(models)

Bundles all of the callback args for the models into a single query.

fullfill(owner, cache=None, extra_args=None, extra_kwargs=None)

Calls the callback function using the owner object. A Callback.SELF arg value will be replaced to be equivalent to the owner instance model.

Parameters
  • owner – the owning object

  • cache – if True, will cache the return in the deserialized data. On next call, the cached result will be returned.

  • extra_args – extra args to pass to the callback function

  • extra_kwargs – extra kwargs to pass to the callback function

Returns

function result

Return type

any

get_callback_args(owner, extra_args=None)

Processes the callback args.

Return type

List[Any]

get_callback_kwargs(owner, extra_kwargs)

Processes the callback kwargs.

Return type

dict

register(name, objtype)

Registers the field to a nested class. Instantiates the corresponding descriptor (i.e. accessor)

Parameters
  • name (str) – name of the field

  • objtype (Type) – the nested class to register the field to

Returns

None

Return type

None