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

Reply via email to