But that's a completely different use case -- and old db's is_saved()
would not cover it. You can probably implement it by overriding
__setattr__ on your model class (if you promise yourself not to modify
repeated properties in-place).

--Guido

On Tue, Mar 27, 2012 at 18:05, Waleed Abdulla <[email protected]> wrote:
> 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.



-- 
--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.

Reply via email to