Google App Engine - Python应用程序:查找节点之间的关系

时间:2011-04-19 16:09:46

标签: python google-app-engine

我有以下型号:

class Relations(db.Model):
    name = db.StringProperty()
    events = db.StringListProperty(required = True)

以及关系数据:

name = direct  events = [node_A,event_B],
name = inverse events = [node_A,node_G],
name = direct  events = [node_A,node_H],
name = inverse events = [node_A,node_X],
name = direct  events = [node_A,node_Y]

并基于用户输入(例如node_A up)我需要找到节点之间的关系并输出节点,如下所示:

输出:node_B-up,node_G-down,node_H-up,node_X-down,node_Y-up

换句话说,我需要查询以找出节点之间的关系,例如,如果node_A与node_B的关系是直接的,而node_A到node_X是反向输出将是node_B-up和node_X-down,如上面的输出示例中那样。 / p>

如果用户输入将是node_G down,那么所需的输出是node_A down,因为除了node_A之外没有与node_G相关的其他节点。

请建议查询。提前致谢 普拉卡什

1 个答案:

答案 0 :(得分:0)

如果我理解正确,这样的事情可行:

query = Relations.all()
query.filter('events =', node)

direct_list = []
inverse_list = []

for relation in query:
  relation.events.remove(node)
  if relation.name == 'direct':
    direct_list.extend(relation.events)
  else:
    inverse_list.extend(relation.events)

if action == 'up':
  #direct_list is all 'up'
  #inverse_list is all 'down'
else:
  #opposite of above