如何动态地将字段添加到继承自mongoengine.django.auth.User的CustomUser模型?

时间:2012-07-11 11:50:45

标签: django pymongo mongoengine

我正在使用mangoengine和django。我有一个继承自mongoengine.django.auth.User的CustomUser模型,它定义了一些字段。我有一个字段,只有一些用户需要它。我不想在每个User对象中使用此字段。由于mongoengine.django.auth.User继承自继承CustomUser模型的mongoengine.Document,因此我无法动态地将字段添加到其中。所以我使我的CustomUser模型继承mongoengine.django.auth.User和mongoengine。 DynamicDocument

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

class CustomUser(User, DynamicDocument):
    # fields

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

1 个答案:

答案 0 :(得分:4)

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

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

class AdminUser(User):
    role = StringField()

然后你可以使用:

User.objects(username=blah)

如果UserAdminUser,它将返回正确的类实例