What is the difference between .get() and .fetch(1)

Posted by AutomatedTester on Stack Overflow See other posts from Stack Overflow or by AutomatedTester
Published on 2010-03-27T12:10:58Z Indexed on 2010/03/27 12:13 UTC
Read the original article Hit count: 237

I have written an app and part of it is uses a URL parser to get certain data in a ReST type manner. So if you put /foo/bar as the path it will find all the bar items and if you put /foo it will return all items below foo

So my app has a query like

data = Paths.all().filter('path =', self.request.path).get()

Which works brilliantly. Now I want to send this to the UI using templates

    {% for datum in data %}
      <div class="content">
      <h2>{{ datum.title }}</h2>
      {{ datum.content }}

      </div>
    {% endfor %}

When I do this I get data is not iterable error. So I updated the Django to {% for datum in data.all %} which now appears to pull more data than I was giving it somehow. It shows all data in the datastore which is not ideal. So I removed the .all from the Django and changed the datastore query to

data = Paths.all().filter('path =', self.request.path).fetch(1)

which now works as I intended. In the documentation it says

The db.get() function fetches an entity from the datastore for a Key (or list of Keys).

So my question is why can I iterate over a query when it returns with fetch() but can't with get(). Where has my understanding gone wrong?

© Stack Overflow or respective owner

Related posts about google-app-engine

Related posts about python