将Social Auth连接到MongoEngine模型会产生错误

2024-07-02 14:05:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在my设置.py文件如MongoEngineSocial Auth文档中所述,我最后添加了以下代码:

    AUTH_USER_MODEL = 'mongo_auth.MongoUser'
    SOCIAL_AUTH_MODELS = 'social_auth.db.mongoengine_models'

尝试运行服务器后出现此错误:

^{pr2}$

如果删除SOCIAL_AUTH_模型,服务器会运行,但是如果MongoEngine出现故障,那么SOCIAL AUTH将无法工作,因为它没有任何引擎。在

MongoEngine版本:0.8.3

我找不到解决办法。我怎么解决这个问题?在


解决方案:

如果您查看social_auth.db.mongoengine_models.py,您将看到{}将被设置为模型,而不是文档。此模型定义为mongo_auth.MongoUser。因为ReferenceField需要一个文档,而不是一个模型(MongoUser),所以我不得不忽略if语句,并将USER_MODEL设置为User文档(mongo.django.auth.User),因为它已经写入else语句中。我删除了替换if和else语句,只删除了这两行:

USER_MODEL_MODULE, USER_MODEL_NAME = 'mongoengine.django.auth.User'.rsplit('.', 1)
USER_MODEL = getattr(import_module(USER_MODEL_MODULE), USER_MODEL_NAME)

另一种方法是从设置中删除SOCIAL_AUTH_USER_MODEL和{},但我不确定MongoEngine是否需要AUTH_USER_MODEL设置。我没试过。在


Tags: 文档py模型authmodelmongosocial语句