your ReferenceProperty should be declared as: childname = db.ReferenceProperty(person)
and then set as: childname = result i think :) Sent from my iPhone On 09-03-24, at 09:51, Steve W <wetmon...@gmail.com> wrote: > > I am struggling with understanding how to use keys to enforce > reference between two tables. > > I need to access the same set of data from table one, and table two. > Then change data within both tables. The data manipulation works in > the "person" table, but it looses the connection to itself in the > "parentperson" table. > > The code below demonstrates the issue. Reload the application four+ > times and you can see the 'parentperson' table/model fills up with > entries. The key I get from 'person' is different every time, but > there is only one row in 'person'. > > Completely confused as to what I am missing on this one.. > > class person(db.Model): > firstName = db.StringProperty() > lastName = db.StringProperty() > rid = db.IntegerProperty() > > class parentperson(db.Model): > childname = db.ReferenceProperty() > persontype = db.StringProperty() > updateTime = db.DateTimeProperty() > > > class ShowIssues(webapp.RequestHandler): > def get(self): > personLookup = person() > query = personLookup.gql("WHERE rid = :1", int(1234)) > result = query.get() > > if result: > tParent = db.Query(parentperson) > tParent.filter('persontype', "Daughter") > tParent.filter('childname',result.key()) > tResult = tParent.get() > else: > tResult = None > > if tResult: > pOutput = """ > Child - Type: %s > <br /> > Key Name: %s > <br /> > Parent First Name is: %s > <br /> > Parent Last Name is: %s > <br /> > Last Update Time was: %s > <hr /> > """ %(tResult.persontype, str(tResult.childname), > tResult.childname.firstName, tResult.childname.lastName, str > (tResult.updateTime)) > self.response.out.write(pOutput) > if result: > output = """ > First Name is %s > <br /> > Last Name is %s > <br /> > Key is %s > """ %(result.firstName, result.lastName, > str(result.key())) > self.response.out.write(output) > result.lastName = "New Smith" > result.put() > gParent = parentperson() > gParent.childname = result.key() > gParent.persontype = "Daughter" > gParent.updateTime = datetime.now() > gParent.put() > > else: > result = person() > result.firstName = "John" > result.lastName = "Smith" > result.rid = int(1234) > result.put() > > qi = parentperson.gql("LIMIT 1000") > qresults = qi.fetch(1000) > self.response.out.write("<hr />") > for qires in qresults: > self.response.out.write(str(qires.childname) + " " + str > (qires.persontype) +"<br />") > #qires.delete() > > qt = person.gql("LIMIT 1000") > qtresults = qt.fetch(1000) > self.response.out.write("<hr />") > for qtires in qtresults: > self.response.out.write(str(qtires.firstName) + " " + str > (qtires.lastName) +"<br />") > #qtires.delete() > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---