我有以下型号:
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相关的其他节点。
请建议查询。提前致谢 普拉卡什
答案 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