I've been looking for a good way to do something similar as well. I load (or create) an entity, do some operations on it (that may or may not change the entity), and then at the end I need to save it or skip saving it if nothing has changed. It would be nice to have something like is_dirty() which is True if the entity has never been saved or has changed since it was loaded.
On Tue, Mar 27, 2012 at 3:19 PM, Guido van Rossum <[email protected]> wrote: > 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. > > -- 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.
