Embedded documents fields¶
Work with embedded documents.
class EDoc(EmbeddedDocument):
i = fields.IntegerField()
class Doc(Document):
__collection__ = 'docs'
edoc = EmbeddedDocumentField(EDoc)
doc = Doc()
doc.edoc = EDoc()
doc.edoc.i = 13
db.insert(doc)
-
class
yadm.fields.embedded.
BaseEmbeddedDocumentField
(smart_null=False)¶ -
from_mongo
(document, value)¶ Convert mongo value to python value.
Parameters: - document (BaseDocument) – document
- value – mongo value
Returns: python value
-
get_embedded_document_class
(document, value)¶ Return class of embedded document for field.
-
prepare_value
(document, value)¶ The method is called when value is assigned for the attribute.
Parameters: - document (BaseDocument) – document
- value – raw value
Returns: prepared value
It must be accept value argument and return processed (e.g. casted) analog. Also it is called once for the default value.
-
to_mongo
(document, value)¶ Convert python value to mongo value.
Parameters: - document (BaseDocument) – document
- value – python value
Returns: mongo value
-
-
class
yadm.fields.embedded.
EmbeddedDocumentField
(embedded_document_class, *, auto_create=True, **kwargs)¶ Field for embedded objects.
Parameters: - embedded_document_class (EmbeddedDocument) – class for embedded document
- auto_create (bool) – automatic creation embedded document from access
-
copy
()¶ Return copy of field.
-
get_embedded_document_class
(document=None, value=None)¶ Return class of embedded document for field.
-
get_fake
(document, faker, depth)¶ Return fake data for testing.
-
get_if_attribute_not_set
(document)¶ Call if key not exist in document.
If auto_create is True, create and return new embedded document. Else AttributeError is raised.
-
prepare_value
(document, value)¶ The method is called when value is assigned for the attribute.
Parameters: - document (BaseDocument) – document
- value – raw value
Returns: prepared value
It must be accept value argument and return processed (e.g. casted) analog. Also it is called once for the default value.
-
class
yadm.fields.embedded.
SimpleEmbeddedDocumentField
(fields, *, auto_create=True, **kwargs)¶ Field for simply create embedded documents.
Usage:
- class Doc(Document):
- embedded = SimpleEmbeddedDocumentField({
- ‘i’: IntegerField(), ‘s’: StringField(),
})
-
contribute_to_class
(document_class, name)¶ Add field for document_class.
Parameters: document_class (MetaDocument) – document class for add
-
class
yadm.fields.embedded.
TypedEmbeddedDocumentField
(type_field=None, types=None, **kwargs)¶ Field for embedded document with variable types.
Parameters: - type_field (str) – name of field in embedded document for select type
- types (dict) – map of type names to embedded document classes
-
get_embedded_document_class
(document, value)¶ Return class of embedded document for field.
-
get_fake
(document, faker, depth)¶ Return fake data for testing.