I happened to catch that today while the post was being moderated.

I updated the code to include that (person) and it still doesn't work.
It seems as though childname=result ( and childname=result.key())
returns an in memory object, and not really the key id.

doing a str(result.key()) after the put() returns a string similar too
<__main__.person object at 0x036C7210>
the memory address changes each time.

I am considering storing the str(result.key()) in a
StringPropertyType, but I shouldn't have too. =)

Thanks for responding so quick.


On Mar 24, 3:56 pm, Paul Roy <paul.ro...@gmail.com> wrote:
> 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