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

Reply via email to