2013-04-25 64 views
2

我已經看到關係屬性尚未在neo4django中實現。在this thread中公開的解決方法是爲每個與屬性的關係創建一個新的節點類型。如何擴展neo4django中的關係類

我不能承受太多的計算,所以我不想使用這種技術。在閱讀我看到的source code時,作爲Relationship類的文檔字符串,此:"""Extend to add properties to relationships."""

我的問題是,該怎麼做?從哪裏開始添加至少一個屬性?

感謝

+1

可能會在項目中引發問題並從創作者處獲得幫助? – 2013-04-26 14:19:28

回答

3

儘管文檔字符串,這仍是一個open issue - 該項目的最古老,其實。可能有一種方法可以通過擴展RelationshipBoundRelationship來實現,但在我能夠解決該問題之前,這並不容易。

我認爲這個問題可能不會成爲使用該項目的瓶頸,因爲您可以給Neo4j更多的內存供節點存儲使用,而不是關係存儲來解決這個問題。 YMMV當然。儘管如此,我知道這感覺像是黑客。如果您確實需要自定義關係屬性,則最短路徑可能會下降到REST客戶端級別。要創建與物業的關係,您可以執行類似如下操作:

class Person(NodeModel): 
    name = StringProperty() 
    friends = Relationship('self', rel_type='friends_with') 

pete = Person.objects.create(name='Pete') 
dave = Person.objects.create(name='Dave') 

# from the neo4j-rest-client [docs][2] 
pete.node.relationships.create("friends_with", dave.node, since=123456789, introduced_at="Christmas party") 

WDYT?

+0

感謝@Matt,是否有可能從課堂內部做到這一點?像'self.node.relationships.create(...)' – 2013-04-29 04:30:09

+1

絕對。您也可以在管理器中執行此操作。如果你需要更多的權力或想要一些自定義關係過濾與你的屬性,你可以嘗試像https://gist.github.com/bramd/5460611#file-models-py-L72。 (注意 - 在這個例子中,他使用的是Cypher,而'node'變量可以更好地命名爲'instance',以將其標記爲模型實例,而不是REST客戶端節點對象) – 2013-04-29 06:00:10

+1

如果您共享某些域詳細信息或激勵示例,我很樂意提供更加量身定做的要求:) – 2013-04-29 06:00:51