DB_relationshipskeylist

app.yaml

application: relationshipskeylist

version: 1

runtime: python

api_version: 1

handlers:

- url: /

  script: main.py

main.py

from google.appengine.ext import db

import datetime

print 'Content-Type: text/html'

print ''

class Player(db.Model):

    name = db.StringProperty()

    guilds = db.ListProperty(db.Key)

class Guild(db.Model):

    name = db.StringProperty()

    @property

    def members(self):

        return Player.all().filter('guilds', self.key())

# Create some test data.

g1 = Guild(name='The Foo Battlers')

g2 = Guild(name='The Bar Fighters')

db.put([g1, g2])

p1 = Player(name='druidjane', guilds=[g1.key(), g2.key()])

p2 = Player(name='TheHulk', guilds=[g2.key()])

db.put([p1, p2])

player_key = p1.key()

guild_key = g2.key()

# ...

# Guilds to which a player belongs:

p = db.get(player_key)

guilds = db.get(p.guilds)  # batch get using list of keys

print '<p>Guilds to which druidjane belongs:</p><ul>'

for guild in guilds:

    print '<li>%s</li>' % guild.name

print '</ul>'

# Players that belong to a guild:

g = db.get(guild_key)

print '<p>Members of The Bar Fighters:</p><ul>'

for player in g.members:

    print '<li>%s</li>' % player.name

print '</ul>'

db.delete([p1, p2, g1, g2])

print '<p>Entities deleted.</p>'

print '<p>The time is: %s</p>' % str(datetime.datetime.now())