自 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)
如果我尝试访问animals_owned
的关系owner
,如您所料,它只检索 AnimalNode 基类而不是它的子类(DogNode
或CatNode
),因此我无法访问属性:smell_level
或vision_level
我希望在新模型中允许这样的事情:
class Owner(StructuredNode):
animals_owned = RelationshipTo(["DogNode", "CatNode"], "OWNED_ANIMAL")
然后当我访问animals_owned
的关系时owner
,它将检索类型的对象,DogNode
因此CatNode
我可以根据需要访问子类属性。
但是 connect 方法会产生以下错误:
TypeError: isinstance() arg 2 must be a type or tuple of types
有什么方法可以优雅地在新模型中实现这一点?
谢谢!