docs: def prep_doc(self, doc_obj):
          """
          This method Validates, gets the Python value, checks unique indexes, 
          gets the db value, and then returns the prepared doc dict object. 
          Useful for save and backup functions.
          @param doc_obj: 
          @return: 
          """
          doc = doc_obj._data.copy()
          for key, prop in list(doc_obj._base_properties.items()):
              prop.validate(doc.get(key), key)
              raw_value = prop.get_python_value(doc.get(key))
              if prop.unique:
                  self.check_unique(doc_obj, key, raw_value)
              value = prop.get_db_value(raw_value)
              doc[key] = value
  
          doc['_doc_type'] = get_doc_type(doc_obj.__class__)
          return doc