Index: pyamf/adapters/_google_appengine_ext_db.py
===================================================================
--- pyamf/adapters/_google_appengine_ext_db.py	(revision 1471)
+++ pyamf/adapters/_google_appengine_ext_db.py	(working copy)
@@ -26,8 +26,15 @@
         remove = True
         self.context.class_aliases[obj.__class__] = pyamf.ClassAlias(obj.__class__, None)
 
+    try:
+        obj._pyamf_key = obj.key().id()
+    except:
+        obj._pyamf_key = None
+
     self.writeObject(obj, *args, **kwargs)
 
+    del obj._pyamf_key
+
     if remove:
         self.context.class_aliases[obj.__class__] = None
 
@@ -44,8 +51,15 @@
             alias = pyamf.ClassAlias(obj.__class__, None)
             self.context.class_aliases[obj.__class__] = alias
 
+    try:
+        obj._pyamf_key = obj.key().id()
+    except:
+        obj._pyamf_key = None
+
     self.writeObject(obj, *args, **kwargs)
 
+    del obj._pyamf_key
+
     if remove:
         self.context.class_aliases[obj.__class__] = None
 
@@ -53,13 +67,13 @@
     """
     Returns a list of properties on an C{db.Model} instance.
     """
-    return list(obj.__class__._properties)
+    return list(obj.__class__._properties) + ['_pyamf_key']
 
 def get_attrs_for_expando(obj):
     """
     Returns a list of dynamic properties on a C{db.Expando} instance.
     """
-    return obj.dynamic_properties()
+    return obj.dynamic_properties() + ['_pyamf_key']
 
 pyamf.register_class(db.Model, attr_func=get_attrs_for_model, metadata=['dynamic'])
 pyamf.register_class(db.Expando, attr_func=get_attrs_for_expando, metadata=['dynamic'])
