【问题标题】:How to add a field dynamically to a CustomUser model inheriting from mongoengine.django.auth.User?如何将字段动态添加到继承自 mongoengine.django.auth.User 的 CustomUser 模型?
【发布时间】:2012-07-11 00:50:07
【问题描述】:

我在 django 中使用 mongoengine。我有一个继承自 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 动态创建字段。但我想知道这样做是否可以。如果有其他更好的方法可用,请提出建议。 谢谢。

【问题讨论】:

    标签: django pymongo mongoengine


    【解决方案1】:

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

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

    class AdminUser(User):
        role = StringField()
    

    然后你可以使用:

    User.objects(username=blah)
    

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

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 2015-08-02
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      相关资源
      最近更新 更多