Google App Engine - приложение Python: найти связь между узлами - PullRequest
1 голос
/ 19 апреля 2011

У меня есть следующая модель:

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) мне нужно найти связь между узлами ивыведите узлы следующим образом:

output: node_B - вверх, node_G - вниз, node_H - вверх, node_X - вниз, node_Y - вверх

Другими словами, мне нужны запросы, чтобы выяснить отношения междунапример, для узлов, если отношение node_A к node_B является прямым, а node_A к node_X обратным, выходные данные будут иметь значение node_B - up и node_X - down, как в вышеприведенном примере вывода.

Если пользовательский ввод будет node_G down, то выводтребуется узел_А выключен, так как нет других узлов, связанных с узлом_G, кроме узла_А.

Пожалуйста, предложите запросы.Заранее спасибо Пракаш

1 Ответ

0 голосов
/ 20 апреля 2011

Если я правильно понимаю, что-то вроде этого может работать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...