Hi

You wouldn't do it that way, and it won'tt work (well it might if you really 
want to go way under the hood)

The "class" property of the PolyModel stores an ordered list of parent 
classes.  The base class that will be looked up on retrieval from the 
datastore is defined in the Key, and in your case will always be 
"DraftProject". When the entity is retrieved from the Datastore the
Key's path is used to resolve the base class. Then metaclasses kick in and 
it actually returns an instance of the subclass
You can't change the key of an entity.

Have a look at polymodel based entities in the datastore. You will see that 
the "class" property stores a list of Class names.


However I have yet to work out a way to change the class, manipulating the 
"class" property doesn't work ;-)
If you go under the hood and change the "class" property in a raw entity it 
would work though.  But this is getting seriously messy.

I would seriously reconsider if this is a path you want to take.  Why not 
consider using adapters and have a simple class
that stores the entities properties (workflow) status and then wrap the 
entity with an adapter with the methods you want etc... based on the status.

I feel this would be a better approach.  I use adapters (zope.component) on 
appengine in pretty much all of my projects. It would
give you the same behaviour r without having to hack around with the 
PolyModel metaclass machinery.

Regards

Tim Hoffman

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/vS_pHzBECAgJ.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to