如何使用mongoengine创建超级用户?

时间:2013-07-01 18:27:35

标签: django mongodb django-admin mongoengine

我有点困惑它是如何工作的。我已经完成了用mongoengine替换Django默认身份验证的所有步骤,以便它使用mongodb和数据库,但我尝试制作注册页面,但无法弄清楚如何使用超级用户功能。目前我正在尝试

newuser = UserManager.create_superuser(username=request.POST['username'],
                                       password=request.POST['password'],
                                       email=request.POST['email'])
newuser.save()

但我一直在给我错误

TypeError at /registerSuper/

unbound method create_superuser() must be called with UserManager instance as first argument (got nothing instead)

4 个答案:

答案 0 :(得分:2)

如果您设置AUTH_USER_MODEL,请执行以下操作:

AUTH_USER_MODEL=('mongo_auth.MongoUser')

然后,您可以使用django返回用户模型,然后使用管理器:

from django.contrib.auth import get_user_model
user = get_user_model().objects.create_user(**user_data)

答案 1 :(得分:1)

你在settings.py中的


    import mongoengine

    INSTALLED_APPS = (
        ...
        'mongoengine.django.mongo_auth',
    )

    AUTHENTICATION_BACKENDS = (
        'mongoengine.django.auth.MongoEngineBackend',
    )
    MONGOENGINE_USER_DOCUMENT = 'mongoengine.django.auth.User'
    AUTH_USER_MODEL = 'mongo_auth.MongoUser'

然后您可以使用标准方式./manage.py createsuperuser

答案 2 :(得分:0)

通常情况下,管理者可以通过模型访问,而不是直接调用。

User.objects.create_superuser(...)

答案 3 :(得分:0)

错误本质上意味着您尝试调用非静态方法,就像它是静态方法一样。具体来说,它表示你需要在UserManager的实例上调用create_superuser(),而不是在UserManager类本身上调用。

如果您使用的是默认用户模型,则User.objects将是UserManager的实例,因此您可以调用User.objects.create_superuser(...)。您可能正在使用mogoengine提供的用户模型,因此我尝试导入mongoengine用户类,然后尝试MongoUser.objects.create_superuser()