2016-01-12 3 views
1

Есть ли способ изменить свойство отношений после его установки с помощью py2neo или cypher? Я создаю трекер инвентаризации, и когда элемент «CHECKED_OUT», свойство «status» в отношении установлено на «True». В идеале, как только элемент будет возвращен или зарегистрирован, я бы хотел изменить свойство «status» на «False». Таким образом, я могу отслеживать предмет и препятствовать его проверке дважды.Изменение или изменение свойств отношений в py2neo

Вот мой код для создания отношений для сделки кассы:

def check_out(self, barcode): 
     emp = self 
     item = barcode 
     id = str(uuid.uuid4()) 
     timestamp = int(datetime.now().strftime("%s")) 
     date = datetime.now().strftime("%F") 
     status=True 
     rel = Relationship(emp, "CHECKED_OUT", item, id=id, timestamp=timestamp, date=date, status=status) 
     if not(graph.create_unique(rel)): 
      return True 
     else: 
      return False 

Я прочитал через py2neo API, и я не могу найти ответ. Если изменение отношения - неправильный подход, можете ли вы предложить лучшую?

ответ

1

Что-то вдоль этой линии должны работать:

def check_in(self, barcode): 
    item = barcode 

    # get the relationship 
    for rel in graph.match(start_node=self, rel_type="CHECKED_OUT", end_node=item): 
     # set property 
     rel.properties["status"] = False 
     rel.push() 

См match(): http://py2neo.org/2.0/essentials.html#py2neo.Graph.match

и properties: http://py2neo.org/2.0/essentials.html#py2neo.Relationship.properties

+0

Я попробовал этот метод, но я получил сообщение об ошибке: 'TypeError: Узлы для конечных точек матч отношения должны быть bound' Любая идея, пожалуйста, – MAYA

0

Спасибо вам большое за это. Он работал, однако, он обновляет все отношения между объектом и человеком. Я немного изменил ваш ответ, чтобы убедиться, что я обновляю правильные отношения. Еще раз спасибо. Я включил версию обновления ниже.

def check_in(self, barcode, id): 
    item = barcode 

    #get the relationship 
    for rel in graph.match(start_node=self, rel_type="CHECKED_OUT", end_node=item): 
     if rel["id"] == id: 
      #set property 
      rel.properties["status"] = False 
      rel.push() 
Смежные вопросы