рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЗрдВрдЬрди рдореЗрдВ рд╕рдВрдмрдВрдз рдореЙрдбрд▓рд┐рдВрдЧ

рдЬреАрдПрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬреЛ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреАрдмреАрдПрдордПрд╕ рдФрд░ рдУрдЖрд░рдПрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЖрджреА рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдРрдк рдЗрдВрдЬрди рдореЗрдВ рд▓рд┐рдВрдХ рдФрд░ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рджреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреА рд╣реИ: рдкрд╣рд▓рд╛, рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╕рдВрдмрдВрдз рд╣реИрдВ ?; рджреВрд╕рд░реЗ, рд╡реЗ GAE рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ?



рд╕рдВрдмрдВрдз рдкреНрд░рдХрд╛рд░





DBMS рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рд┐рд╢реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ-рд╕реЗ-рдПрдХ, рдПрдХ рд╕реЗ рдХрдИ, рдФрд░ рдХрдИ-рд╕реЗ-рдХрдИ рд░рд┐рд╢реНрддреЗред рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╕рдВрдмрдВрдз рд▓рд┐рдВрдХ рдХреЗ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд▓рд┐рдВрдХ рдПрдХ рдЗрдХрд╛рдИ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдЗрдХрд╛рдИ рдХреА рдХреБрдВрдЬреА рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ "рдкрд╛рд▓рддреВ" "рдорд╛рд▓рд┐рдХ" рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ "рдкрд╛рд▓рддреВ" рдЗрдХрд╛рдИ рдореЗрдВ рдЗрдХрд╛рдИ "рдорд╛рд▓рд┐рдХ" рдХреА рдХреБрдВрдЬреА рд╡рд╛рд▓рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИред



рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рд░реВрдк рдореЗрдВ рдПрдХ-рд╕реЗ-рдХрдИ рдкреНрд░рдХрд╛рд░ рдПрдХ рд▓рд┐рдВрдХ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ "рдкрд╛рд▓рддреВ" рдХрд╛ рдЕрдкрдирд╛ "рдорд╛рд▓рд┐рдХ" рд╣реИ, рдЗрд╕рд▓рд┐рдП "рдорд╛рд▓рд┐рдХ" рдХреЗ рдкрд╛рд╕ рдХрдИ "рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░" рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, "рдорд╛рд▓рд┐рдХ" рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ - рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд "рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░" рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬреЛ рдЙрд╕реЗ рдЕрдкрдирд╛ рдорд╛рд▓рд┐рдХ рдХрд╣рддреЗ рд╣реИрдВред



рдПрдХ-рд╕реЗ-рдПрдХ рд╕рдВрдмрдВрдз рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рде рдПрдХ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдз рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ "рдкрд╛рд▓рддреВ" рд╣реИ рдЬреЛ "рдорд╛рд▓рд┐рдХ" рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреНрд░реЙрд╕-рд░реЗрдлрд╝рд░реЗрдВрд╕ (рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдлрд╝реАрд▓реНрдб-рд▓рд┐рдВрдХ) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдХреЗ рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдордЬрдмреВрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдХрдИ-рдХрдИ рд░рд┐рд╢реНрддреЗ рдереЛрдбрд╝реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рд▓рд┐рдВрдХ рдХреЗ рдЬреЛрдбрд╝реЗ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдореЗрдВ рдХрдИ рдЗрдирдмрд╛рдЙрдВрдб рдФрд░ рдЖрдЙрдЯрдмрд╛рдЙрдВрдб рд▓рд┐рдВрдХ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдлреЙрд░реНрдо рдХреА рдЬреЛрдбрд╝реА (from_url, to_url) рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ, рдРрд╕реЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред



рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдВрдХ рдРрдк рдЗрдВрдЬрди рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, "рдПрдХ-рд╕реЗ-рдХрдИ" рдФрд░ рдЕрдиреНрдп рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдВрд╕реНрдерд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рд╣рдордиреЗ рдкреНрд░рд╢реНрди рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдмрддрд╛рдпрд╛: рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдХрд╛рдИ рдХреЛ рджреВрд╕рд░реЗ рдХреЛ рдХреИрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?



рдРрдк рдЗрдВрдЬрди рдореЗрдВ рд╕рдВрдмрдВрдз





рдПрдХ рд╕реЗ рдХрдИ





рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдмрдВрдз рдХрд┐рд╕реА рднреА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдРрдк рдЗрдВрдЬрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо "рдХрдИ" рдкрдХреНрд╖ рд╕реЗ "рдПрдХ" рдкрдХреНрд╖ рдХреА рдХреБрдВрдЬреА рдХрд╛ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП ReferenceProperty рд▓рд┐рдВрдХ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



class Owner(db.Model): name = db.StringProperty() class Pet(db.Model): name = db.StringProperty() owner = db.ReferenceProperty(Owner)
      
      







"рдкрд╛рд▓рддреВ" рдХреЗ рд▓рд┐рдП "рдорд╛рд▓рд┐рдХ" рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо pet.owner рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдРрдк рдЗрдВрдЬрди рдЙрд╕ рдЗрдХрд╛рдИ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рднреА "рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░реЛрдВ" рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ "рдорд╛рд▓рд┐рдХ" рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:



 pets = Pet.all().filter('owner =', owner).fetch(100)
      
      







рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдЖрд╕рд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: ReferenceProperty рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдорд╛рд▓рд┐рдХ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рддрд░рд╣ "рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░реЛрдВ" рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 pets = Owner.owner_set.fetch(100)
      
      







рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, App Engine рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдлрд╝реАрд▓реНрдб рдирд╛рдо + "_set" рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдо рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 class Pet(db.Model): name = db.StringProperty() owner = db.ReferenceProperty(Owner, collection_name='pets') pets = owner.pets.fetch(100)
      
      







рдПрдХ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрдХрд╛рдИ рдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдЬрдм рдПрдХ рдЗрдХрд╛рдИ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рддреЛ рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЗрд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореВрд▓ рдЗрдХрд╛рдИ рдХреА рдХреБрдВрдЬреА рдмрдЪреНрдЪреЗ рдХреА рдХреБрдВрдЬреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рддреА рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:



 class Owner(db.Model): name = db.StringProperty() class Pet(db.Model): name = db.StringProperty() bob = Owner(name='Bob') felix = Pet(name='Felix', parent=bob) owner_of_felix = felix.parent
      
      







рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣реАрдВ рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рд░реЗрдлрд╝рд░реЗрдВрд╕ рдлрд╝реАрд▓реНрдб (ReferenceProperty) рдХреЗ рдмрдЬрд╛рдп рдкреИрд░реЗрдВрдЯрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдм рдмреЗрд╣рддрд░ рд╣реИ? рдпрд╣ рд▓реЗрдирджреЗрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдРрдк рдЗрдВрдЬрди рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЗрдирджреЗрди рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╕рдореВрд╣ рдХреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рд╣реА рд╕рдореВрд╣ рд╕реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдВрд╕реНрдерд╛рдПрдВред рдпрджрд┐ рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд▓рд┐рдВрдХ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рднреА рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рдЗрдХрд╛рдИ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рддрддреНрдХрд╛рд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреА рдХреБрдВрдЬреА рдХреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдПрдХ рд╕реЗ рдПрдХ





рдПрдХ-рд╕реЗ-рдПрдХ рд░рд┐рд╢реНрддреЗ рдПрдХ-рд╕реЗ-рдХрдИ рд░рд┐рд╢реНрддреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИред рд╡реЗ рд▓рд┐рдВрдХ рдлрд╝реАрд▓реНрдб рдХреЗ "рдПрдХ" рдкрдХреНрд╖ рдкрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдЗрдХрд╛рдИ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдХреЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред



рдХрдИ-рд╕реЗ-рдЕрдиреЗрдХ





рдХрдИ-рдХрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдРрдк рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рдорд╛рди рдПрдХ рд▓рд┐рдВрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░рд┐рд╢реНрддреЗ рдХреЗ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬреЛрдбрд╝реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ "рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░ / рдорд╛рд▓рд┐рдХреЛрдВ" рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:



 class Owner(db.Model): name = db.StringProperty() class Pet(db.Model): name = db.StringProperty() class PetOwner(db.Model): pet = db.ReferenceProperty(Pet, collection_name='owners') owner = db.ReferenceProperty(Owner, collection_name='pets')
      
      







рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдлрд╛рдпрджреЗ рдпрд╣ рд╣реИрдВ рдХрд┐ рдЖрдк рд░рд┐рд╢реНрддреЛрдВ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд▓рд┐рдВрдХ рдореЙрдбрд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд░рд┐рд╢реНрддреЗ рдХреЗ рд▓рд┐рдВрдХ рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рдВрдмрдВрдзрд┐рдд рдЬреЛрдбрд╝реЗ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдирд┐рдХрд╛рдп рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд▓рд┐рдВрдХ рд╕реЗ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдмреИрдЪ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХреЗ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ * :



 petowners = felix.owners.fetch(100) prefetch_refprops(owners, 'owner') owners = [x.owner for x in petowners]
      
      







рдПрдХ рдЕрдиреНрдп рджрд┐рд╢рд╛ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг ("рдорд╛рд▓рд┐рдХ" рд╕реЗ "рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░" рддрдХ) рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдПрдХ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░рд┐рд╢реНрддреЗ рдХреА рджреВрд╕рд░реА рддрд░рдл рдЗрдХрд╛рдИ рдХреБрдВрдЬреА рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕реАрдорд┐рдд рд╣реЛрддреА рд╣реИ (рдЬреИрд╕реЗ, рдХреБрдЫ рд╕реМ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо)ред рдРрд╕реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде, рдмреИрдЪ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:



 class Pet(db.Model): name = db.StringProperty() class Owner(db.Model): name = db.StringProperty() pets = db.ListProperty(db.Key)
      
      







рдкреНрд░рддреНрдпреЗрдХ "рдорд╛рд▓рд┐рдХ" рд╕реЗ рдЖрдк рдЙрд╕рдХреЗ "рдкрд╛рд▓рддреВ рдЬрд╛рдирд╡рд░реЛрдВ" рдХреА рд╕реВрдЪреА рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:



 pets = db.get(bob.pets)
      
      







рдФрд░ рджрд┐рдП рдЧрдП "рдкрд╛рд▓рддреВ" рдХреЗ рд▓рд┐рдП рд╕рднреА "рдорд╛рд▓рд┐рдХреЛрдВ" рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рдЪрд▓рд╛рдПрдВ:



 owners = Owner.all().filter('pets =', felix).fetch(100)
      
      







рдЕрдВрдд рдореЗрдВ, рдПрдХ рд╣рд╛рдЗрдмреНрд░рд┐рдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рдФрд░ рд▓рдЪреАрд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░, рдореИрдВ рдЖрдкрдХреЛ Brett Slatkins рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрджреНрднреБрдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдРрдк рдЗрдВрдЬрди рдкрд░ рдЬрдЯрд┐рд▓ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ ред



* - рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдкреИрдЯрд░реНрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рд╢реНрди рдХрд┐рдП рдмрд┐рдирд╛ рд▓рд┐рдВрдХ рд╕реЗ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХреЗред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рдВрджрд░реНрдн рдлрд╝реАрд▓реНрдб рддреБрд░рдВрдд рдЗрдХрд╛рдИ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рд▓рд┐рдВрдХ рд╡рд┐рдзрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░, рдПрдХ рдЕрдиреБрд░реЛрдз рднрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреИрдЯрд░реНрди рдПрдХ рд╕рдордп рдореЗрдВ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ (рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ)ред



All Articles