Sorry to hear that. I guess you could manually set a flag on the parent entity that indicates that you haven't written it yet, and clear it in a pre_put_hook.
BTW is there any information in the parent entities? Did you know you can create child entities for which no parent actually exists? All you need is the parent *key*, it doesn't need to have an entity. --Guido On Tue, Mar 27, 2012 at 14:47, Andreas <[email protected]> wrote: > not a good option in my case. > > On Mar 27, 2012, at 5:23 PM, Guido van Rossum wrote: > >> You might be able to use get_or_insert() and benefit from the in-memory >> cache. >> >> On Tue, Mar 27, 2012 at 13:49, Andreas <[email protected]> wrote: >>> exactly what im doing. i create the keys myself. >>> >>> rootkey = ndb.Key('root', 'key') >>> a = Asset(key=ndb.Key('Asset', 'keyname', parent=rootkey)) >>> >>> a._has_complete_key() # returns true >>> >>> in my app i work in with entity batches and sometimes it happens that i need >>> to create ancestors for that entity which could already exist so till now i >>> used is_saved() to filter out the entities that are already saved to the >>> datastore to avoid putting them again (or at least trying to put them again) >>> >>> >>> On Mar 27, 2012, at 3:38 PM, Guido van Rossum wrote: >>> >>> On Tuesday, March 27, 2012 6:41:25 AM UTC-7, aschmid wrote: >>>> >>>> is there an equivalent of the db.Model function is_saved() with ndb.Model? >>> >>> >>> No; what are you trying to do? You might be able to check whether the entity >>> has a key and if so, whether that key isn't incomplete: >>> >>> if ent.key and ent.key.id(): >>> # It has a complete key. >>> else: >>> # Hasn't been written, ever. >>> >>> However this can be fooled if you explicitly set the key or the id when you >>> create an entity, e.g. >>> >>> ent = Employee(id='joe') >>> >>> or >>> >>> ent = Employee(key=ndb.Key(Employee, 'joe')) >>> >>> (These two are equivalent.) >>> >>> --Guido van Rossum >>> >>> -- >>> 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/-/MeORtJLdaqEJ. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/google-appengine?hl=en. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Google App Engine" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/google-appengine?hl=en. >> >> >> >> -- >> --Guido van Rossum (python.org/~guido) >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google App Engine" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/google-appengine?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > -- --Guido van Rossum (python.org/~guido) -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
