【发布时间】:2016-03-02 10:25:34
【问题描述】:
自 2014 年以来,存在与多个对象类型的关系不可用的问题: https://github.com/robinedwards/neomodel/issues/126
现在是 2016 年,我仍然不知道有任何解决方案可以解决这个关键问题。
使用示例:
class AnimalNode(StructuredNode):
tail_size = IntegerProperty()
age = IntegerProperty()
name = StringProperty()
class DogNode(AnimalNode):
smell_level = IntegerProperty()
class CatNode(AnimalNode):
vision_level = IntegerProperty()
class Owner(StructuredNode):
animals_owned = RelationshipTo("AnimalNode", "OWNED_ANIMAL")
dog_node1 = DogNode(name="Doggy", tail_size=3, age=2, smell_level=8).save()
cat_node1 = CatNode(name="Catty", tail_size=3, age=2, vision_level=8).save()
owner = Owner().save()
owner.animals_owned.connect(dog_node1)
owner.animals_owned.connect(cat_node1)
如果我尝试访问owner 的animals_owned 关系,如您所料,它只检索AnimalNode 基类而不是它的子类(DogNode 或CatNode),所以我无法访问这些属性: smell_level 或 vision_level
我希望在 neomodel 中允许这样的事情:
class Owner(StructuredNode):
animals_owned = RelationshipTo(["DogNode", "CatNode"], "OWNED_ANIMAL")
然后当我访问owner 的animals_owned 关系时,它将检索DogNode 和CatNode 类型的对象,因此我可以根据需要访问子类属性。
但是 connect 方法会产生以下错误:
TypeError: isinstance() arg 2 must be a type or tuple of types
有什么方法可以优雅地在 neomodel 中实现这一点?
谢谢!
【问题讨论】:
标签: python neo4j py2neo neomodel