....
Rep().replist = L
Rep().put()
mylist = Rep().all().fetch(10)
I am trying to display mylist; but I am getting the object. Thanks.
You're using GAE? I suspect the return value of Query.fetch is an
iterator and not a list. You can make it a list by passing it to the
list constructor, like so:
mylist = list(Rep.all().fetch(10))
Richard.
Care to mention what db is? Presumably it's some other module, not in
the standard library, that you've imported. And presumably it has a
class called Model defined in it.
But the three lines following make no sense to me in isolation, so
unless you know how db.Model is intended to be used, I can't imagine
what you expect here. Rep().replist = L creates a temporary object,
gives it an attribute, and throws them both away. Although I could
write code that would have enough side effects to do something with
that, I can't imagine why I would want to.
Be more explicit with the assumptions (in this case, at least show the
import), and with the results. So instead of saying "I am getting the
object," say
print mylist
produces the output:
sjfdsljdsfds;lkjfdsfds
fdsljfds;ldsj;dslkjfds
dsfjlfkjslkjfd s fj lkjfd
DaveA
Yes. I am using GAE, thanks. I tried
mylist = list(Rep().all().fetch(10))
and tried to render it with Mako template
% for i in mylist:
${i}
% endfor
I still get the output:
len(mylist): 2
<__main__.Rep object at 0x03AE6C50>
<__main__.Rep object at 0x03AE6270>
As far as I understand there are two items in mylist and they are Rep
objects. But previously I wrote the list L to datastore:
L = []
s = self.request.get('sentence')
L.append(s)
L = L[0].split('\r\n')
Rep().replist = L
Rep().put()
mylist = list(Rep().all().fetch(10))
so I don't understand why I fetch a list and I get an object. Thanks
for your help.
I am using Google App Engine, but it seems that the problem is a
Python problem. I fixed the code a little bit, now I can print the
lists:
Rep().replist = L
Rep().put()
query = Rep.all()
for result in query:
self.response.out.write(result.replist)
The output of this is:
[u'a', u'b'][u'a', u'b'][u'a', u'b']. . .
So, these are the lists in datastore. I want to take one of these
lists and apply list method on it. How do I do that? Thanks.
Okay that <Rep object at 0x....> is the representation of the object.
If you want to control how an object is represented when you put it in
a template you should define a __str__ method:
class Rep(db.model):
# Properties
...
# Representation
def __str__(self):
return "\n".join(self.replist)
Or however you want to object to appear. It may help to do a few
experiments outside GAE in the interactive interpreter.
Richard.
Quite simple. You can apply a list method to a list object by actually
getting the list object. You can't call a list method on a query
object or a Rep object.
Rep() = Rep object
Rep.all() = Query object
list(Rep.all()) = List of Rep objects.
list(Rep.all())[0] = A single Rep object
list(Rep.all())[0].replist = A list
So once you have that last step, you have a list. Which you can
manipulate like any other Python list.
Once you have the list, you can call all them
> Rep() = Rep object
> Rep.all() = Query object
> list(Rep.all()) = List of Rep objects.
> list(Rep.all())[0] = A single Rep object
> list(Rep.all())[0].replist = A list
>
Thanks! This was very helpful.