Hi,

You have defined latitude and longitude as StringListProperty and are
passing it a string as opposed to
a list, either change the field type i.e. use GeoPt
http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#GeoPt
or pass in a list
location.latitude.append(self.request.get('latitude') )

S. Sriram

On Apr 21, 5:42 am, shreevaishnav <sagarshreevaish...@gmail.com>
wrote:
> Hi,
>    I want to append a value to the list in the database,dynamically
> from a html form , one value at each time in such a way that the new
> value is appended to the old one in the list and display on the web
> page in the database.How to link multiple entities in the
> datastore.How to make an attribute in an entity as unique.
> Please help me.
>
> I have the following code as below:
>
> import cgi
> from google.appengine.api import users
> from google.appengine.ext import webapp
> from google.appengine.ext.webapp.util import run_wsgi_app
> from google.appengine.ext import db
>
> class Route(db.Model):
>  routenumber = db.StringProperty(unique=True )--->unique could not be
> used....
>  routename = db.StringProperty()
>  date = db.DateTimeProperty(auto_now_add=True)
>
> class Location(db.Model):
>  reference = db.ReferenceProperty(Route)
>  latitude = db.StringListProperty()
>  longitude = db.StringListProperty()
>  landmarkname = db.StringListProperty()
>  date = db.DateTimeProperty(auto_now_add=True)
>
> class Current(db.Model):
>  reference = db.ReferenceProperty(Route)
>  currentlat = db.StringListProperty()
>  currentlong = db.StringListProperty()
>  date = db.DateTimeProperty(auto_now_add=True)
>
> class MainPage(webapp.RequestHandler):
>  def get(self):
>
>   self.response.out.write('<html><body><table
> border=1><tr><th>Routenumber</th><th>Routename</th></tr>')
>   routes = db.GqlQuery("SELECT * FROM Route")
>
>   for route in routes:
>    self.response.out.write('<tr><td><blockquote>%s</blockquote></td>'
> %
>                            cgi.escape(route.routenumber))
>    self.response.out.write('<td><blockquote>%s</blockquote></td></tr>'
> %
>                            cgi.escape(route.routename))
>   self.response.out.write('</table></body></html>')
>
>   self.response.out.write('<html><body><table
> border=1><tr><th>Latitude</th><th>Longitude</th><th>Landmarkname</th></
> tr>')
>   locations = db.GqlQuery("SELECT * FROM Location")
>
>   for location in locations:
>    #self.response.out.write('<tr><td><blockquote>%s</blockquote></td>'
> %
>                           # cgi.escape(route.routenumber))
>     self.response.out.write('<tr><td><blockquote>%s</blockquote></td>'
> %
>                            cgi.escape(location.latitude))
>     self.response.out.write('<td><blockquote>%s</blockquote></td>' %
>                            cgi.escape(location.longitude))
>     self.response.out.write('<td><blockquote>%s</blockquote></td></
> tr>' %
>                            cgi.escape(location.landmarkname))
>   self.response.out.write('</table></body></html>')
>
>   self.response.out.write('<html><body><table
> border=1><tr><th>CurrentLatitude</th><th>CurrentLongitude</th></
> tr>')
>   currents = db.GqlQuery("SELECT * FROM Current")
>
>   for current in currents:
>    #self.response.out.write('<tr><td><blockquote>%s</blockquote></td>'
> %
>                            #cgi.escape(route.routenumber))
>     self.response.out.write('<tr><td><blockquote>%s</blockquote></td>'
> %
>                            cgi.escape(current.currentlat))
>     self.response.out.write('<td><blockquote>%s</blockquote></td></
> tr>' %
>                            cgi.escape(current.currentlong))
>   self.response.out.write('</table></body></html>')
>
>   self.response.out.write("""<html><body>
>   <form action="/sign" method="post">
>   Routenumber :<input type="text" name="routenumber" size=20><br>
>   Routename   :<input type="text" name="routename" size=20><br>
>   Latitude    :<input type="text" name="latitude" size=20><br>
>   Longitude   :<input type="text" name="longitude" size=20><br>
>   Landmarkname:<input type="text" name="landmarkname" size=20><br>
>   Currentlat  :<input type="text" name="currentlat" size=20><br>
>   Currentlong :<input type="text" name="currentlong" size=20><br>
>
>   <input type="submit" value="Send">
>
>   </form>
>  </body>
> </html>""")
>
> class Guestbook(webapp.RequestHandler):
>  def post(self):
>   route = Route()
>   route.routenumber = self.request.get('routenumber')
>   route.routename = self.request.get('routename')
>   route.put()
>
>   location = Location()
>   location.latitude = self.request.get('latitude')
>   location.longitude = self.request.get('longitude')
>   location.landmarkname = self.request.get('landmarkname')
>   location.put()
>
>   current = Current()
>   current.currentlat = self.request.get('currentlat')
>   current.currentlong = self.request.get('currentlong')
>   current.put()
>
>   self.redirect('/')
>
> application = webapp.WSGIApplication([('/', MainPage),('/sign',
> Guestbook)],debug=True)
>
> def main():
>  run_wsgi_app(application)
>
> if __name__ == "__main__":
>  main()Traceback (most recent call last):
>   File "C:\Program Files\Google\google_appengine\google\appengine\ext
> \webapp\__init__.py", line 498, in __call__
>     handler.get(*groups)
>   File "C:\Program Files\Google\google_appengine\aitdatabase
> \database.py", line 44, in get
>     for location in locations:
>   File "C:\Program Files\Google\google_appengine\google\appengine\ext
> \db\__init__.py", line 1468, in next
>     return self.__model_class.from_entity(self.__iterator.next())
>   File "C:\Program Files\Google\google_appengine\google\appengine\ext
> \db\__init__.py", line 997, in from_entity
>     instance = cls(None, _from_entity=True, **entity_values)
>   File "C:\Program Files\Google\google_appengine\google\appengine\ext
> \db\__init__.py", line 596, in __init__
>     prop.__set__(self, value)
>   File "C:\Program Files\Google\google_appengine\google\appengine\ext
> \db\__init__.py", line 396, in __set__
>     value = self.validate(value)
>   File "C:\Program Files\Google\google_appengine\google\appengine\ext
> \db\__init__.py", line 2386, in validate
>     raise BadValueError('Property %s must be a list' % self.name)
> BadValueError: Property latitude must be a list
>
> Please do help me in achieving the task.....
> with regards,
> shreevaishnav
>
> This program is giving the following errors::::
--~--~---------~--~----~------------~-------~--~----~
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 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to