pydent.relationships.HasManyGeneric

class pydent.relationships.HasManyGeneric(nested, additional_args=None, callback=None, callback_kwargs=None, **kwargs)[source]

Bases: pydent.relationships.HasMany

Establishes a One-to-Many relationship using ‘parent_id’ as the attribute to find other models.

HasMany relationship initializer.

Parameters
  • nested (str) – Model class name for this relationship

  • ref_model – Reference model name of the model owning this relationships.

@add_schema
class Author(ModelBase):
    fields=dict(books=HasMany("Book", "Author"))  # search for books using 'author_id'
Parameters
  • attr (str) – Attribute name to use with reference model (default=’id’). For example “Author” => ‘author_id’

  • ref (str) – The reference to use to find models. If none, a reference is built from the ‘ref_model’ and ‘attr’ parameters

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

HasMany relationship initializer.

Parameters
  • nested (str) – Model class name for this relationship

  • ref_model – Reference model name of the model owning this relationships.

@add_schema
class Author(ModelBase):
    fields=dict(books=HasMany("Book", "Author"))  # search for books using 'author_id'
Parameters
  • attr (str) – Attribute name to use with reference model (default=’id’). For example “Author” => ‘author_id’

  • ref (str) – The reference to use to find models. If none, a reference is built from the ‘ref_model’ and ‘attr’ parameters

Methods

__init__(nested[, additional_args, …])

HasMany relationship 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.

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