def __get_doc(self, fld, item):
"""Get document as dict or a list of documents."""
from .fields import FollowReferenceField
@singledispatch
def doc(fld, item):
return item
@doc.register(db.ListField)
def doc_list(fld, item):
return [self.__get_doc(fld.field, el) for el in item]
@doc.register(FollowReferenceField)
def doc_frl(fld, item):
doc = fld.document_type.objects(id=item).get()
doc.begin_goodjson()
result = doc.to_mongo()
doc.end_goodjson()
return result
result = doc(fld, item)
if isinstance(result, dict) and "id" not in result and "_id" in result:
result["id"] = result.pop("_id")
return result
评论列表
文章目录