1

我试图创建我的模型 MyUser 扩展 neo4django.auth.models.User,所以我可以使用底层身份验证系统。问题是我还想创建一个超类,从中派生许多方法和属性,这些方法和属性对于我的不同类型的节点来说非常常见。

我这样做了:

from neo4django.auth.models import User as AuthUser
class MyBaseModel(models.NodeModel):
    ....
    class Meta:
        abstract = True

class MyUser(MyBaseModel,AuthUser):
    ...

但是对模型的任何操作都会给我
ValueError: Multiple inheritance of NodeModels is not currently supported.

建议,解决方法?
由于 MyBaseModel 本质上是一个方法和属性的容器,也许一个添加字段的装饰器会是一个优雅的解决方案?

谢谢。

4

1 回答 1

0

你是对的 - 具有多个 - 继承基础的多重继承NodeModel将不起作用。

但是,可以MyBaseModel继承自AuthUser? 如果没有,你也可以混入一个非NodeModel类。所以如果MyBaseModel只是方法的容器,你可以这样做

class MyBaseModelMixin(object):
    ....

然后从中继承

class MyUser(MyBaseModelMixin, AuthUser):
    ....
于 2013-09-18T01:16:40.033 回答