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 google-appengine@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---