Neomodel关系

时间:2014-11-02 16:00:29

标签: django neo4j neomodel

我是Neo4J和图形数据库的新手,因此我对构建关系有一些疑问。我在这个项目中使用Neomodel

我有两个独立的数据模型文件(请注意,我在使用Neo4J与Postgres进行实验时使用的是nodes.py而不是models.py)

帐户> nodes.py

class User(StructuredNode):
    firstName = StringProperty()
    lastName = StringProperty()
    email = StringProperty()
    active = BooleanProperty()
    campaigns = RelationshipTo('campaigns.nodes.Campaign', 'OWNS')

广告系列> nodes.py

class Campaign(StructuredNode):
    name = StringProperty()
    campaignId = IntegerProperty()
    active = BooleanProperty()
    user = RelationshipFrom('accounts.nodes.User', 'OWNS')

我不确定我是否根据最佳实践配置了关系(我知道当前代码是多余的。)是否有必要在两个节点类上都有RelationshipTo和RelationshipFrom属性?或者从所有者节点(用户)到拥有节点(Campaign)的RelationshipTo是否足够?

或者,如果Campaign与User之间存在单独的RelationshipTo属性:

 user = RelationshipTo('accounts.nodes.User', 'OWNED_BY')

我不确定这是否是一个重大问题,但任何指导或提示都将不胜感激!

1 个答案:

答案 0 :(得分:3)

只有当您想从双方访问时,才需要在每一侧都有一个定义。即如果您只想从广告系列对象中调用campaign.user.single()但不关心访问用户广告系列,那么您就不需要在User类上定义。

通常我发现最好在双方定义一个关系,因为对于模式新手来说,更容易理解它的结构。两个定义应该是相同的类型,因此OWNS_BY将返回一组不同的关系。这些类型的命名完全取决于你,但大写似乎是惯例,

希望这有帮助,如果您有任何其他问题,请随时在github上给我发消息,

干杯,

罗布