Then you can use parent_key() method to access key directly.
On Oct 2, 7:40 pm, yejun <[EMAIL PROTECTED]> wrote:
> I think you shouldn't define a post field in comment at all. Simply
> make post as parent of comment when storing data.
>
> On Oct 2, 6:40 pm, Rafe <[EMAIL PROTECTED]> wrote:
>
> > Folks,
>
> > There have been a number of people asking on the forums what the
> > correct way to get the key of a ReferenceProperty without causing a
> > whole 'get' to the datastore. This can be especially inefficient if
> > you need to iterate over 100 or so values from a query, when all you
> > need is, say, the string version of all of those objects keys.
>
> > Let's look at an example:
>
> > class Post(db.Model):
> > title = db.StringProperty()
> > text = db.StringProperty(multiline=True)
>
> > class Comment(db.Model):
> > text = db.StringProperty()
> > post = db.ReferenceProperty(Post, collection_name='comments')
>
> > Let's say you wanted to generate a list of URLs from all the
> > comments in your system with links to the actual posts. This would be
> > an inefficient way to do this:
>
> > def generate_delete_urls(post):
> > urls = []
> > for comment in post:
> > key = comment.post.key()
> > urls.append('http://myapp.appspot.com/post/%s'%key)
>
> > The problem is that each time you de-reference the 'post' property,
> > it will cause a call to 'get' from the Datastore for information you
> > don't need.
>
> > Here is the correct way to get keys for all the posts:
>
> > def generate_delete_urls(post):
> > urls = []
> > for comment in post:
> > key = Comment.post.get_value_for_datastore(comment)
> > urls.append('http://myapp.appspot.com/post/%s'%key)
>
> > Right now, some folks may be using the protected variables that get
> > stored on the Model instance. This is not a good way to access
> > objects as it could well change in the future. If this happens, your
> > application can break!
>
> > So, to make sure it's clear, let me break it down for you:
>
> > reference_property = Comment.post # Gets actual
> > db.ReferenceProperty object
> > key = reference_property.get_value_for_datastore(instance)
>
> > - Rafe Kaplan
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---