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 [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
-~----------~----~----~----~------~----~------~--~---