3

我正在将 mongoengine 与 django 一起使用。我有一个继承自 mongoengine.django.auth.User 的 CustomUser 模型,它定义了一些字段。我有一个字段,只有某些用户需要。我不希望每个用户对象中都有这个字段。由于 mongoengine.django.auth.User 是从 mongoengine.Document 继承的,CustomUser 模型是从其中继承的,因此我无法动态向其中添加字段。所以我让我的 CustomUser 模型继承自 mongoengine.django.auth.User 和 mongoengine。动态文档

from mongoengine.django.auth import User
from mongoengine import DynamicDocument

class CustomUser(User, DynamicDocument):
    # fields

使用这种方法,我可以为 CustomUser 动态创建字段。但我想知道这样做是否可以。如果有其他更好的方法可用,请提出建议。谢谢。

4

1 回答 1

4

是的,这是完全有效的,因为mongoengine.django.auth.User该类是可继承的。

替代方法可能是针对不同类型的用户显式扩展,例如:

class AdminUser(User):
    role = StringField()

然后你可以使用:

User.objects(username=blah)

如果那User是一个AdminUser,它将返回正确的类实例

于 2012-07-11T12:10:37.540 回答