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.

Reply via email to