Reference field¶
Work with references.
class RDoc(Document):
i = fields.IntegerField()
class Doc(Document):
rdoc = fields.ReferenceField(RDoc)
rdoc = RDoc()
rdoc.i = 13
db.insert(rdoc)
doc = Doc()
doc.rdoc = rdoc
db.insert(doc)
doc = db.get_queryset(Doc).find_one(doc.id) # reload doc
assert doc.rdoc.id == rdoc.id
assert doc.rdoc.i == 13
Or asynchronous:
rdoc = await doc.rdoc
assert rdoc.id == rdoc.id
assert rdoc.i == 13
assert doc.rdoc == rdoc.id
-
exception
yadm.fields.reference.
BrokenReference
¶ Raise if referrenced document is not found.
-
exception
yadm.fields.reference.
NotBindingToDatabase
¶ Raise if set ObjectId insted referenced document to new document, who not binded to database.
-
class
yadm.fields.reference.
Reference
(_id: bson.objectid.ObjectId, parent: yadm.documents.DocumentItemMixin, field: yadm.fields.reference.ReferenceField)¶ Reference object.
This is awaitable:
doc = await reference