Python 将Social Auth连接到MongoEngine模型会出现错误
在对我的settings.py文件进行必要的修改(如和文档中所述)后,我最终添加了以下代码:Python 将Social Auth连接到MongoEngine模型会出现错误,python,django,django-models,mongoengine,django-socialauth,Python,Django,Django Models,Mongoengine,Django Socialauth,在对我的settings.py文件进行必要的修改(如和文档中所述)后,我最终添加了以下代码: AUTH_USER_MODEL = 'mongo_auth.MongoUser' SOCIAL_AUTH_MODELS = 'social_auth.db.mongoengine_models' 我在尝试运行服务器后出现以下错误: File "/Library/Python/2.7/site-packages/social_auth/db/mongoengine_models.py",
AUTH_USER_MODEL = 'mongo_auth.MongoUser'
SOCIAL_AUTH_MODELS = 'social_auth.db.mongoengine_models'
我在尝试运行服务器后出现以下错误:
File "/Library/Python/2.7/site-packages/social_auth/db/mongoengine_models.py", line 35,
in <module> class UserSocialAuth(Document, UserSocialAuthMixin):
File "/Library/Python/2.7/site-packages/social_auth/db/mongoengine_models.py", line 37, in UserSocialAuth
user = ReferenceField(USER_MODEL, dbref=True)
File "/Library/Python/2.7/site-packages/mongoengine/fields.py", line 837, in __init__
self.error('Argument to ReferenceField constructor must be a '
File "/Library/Python/2.7/site-packages/mongoengine/base/fields.py", line 125, in error
raise ValidationError(message, errors=errors, field_name=field_name)
mongoengine.errors.ValidationError: Argument to ReferenceField constructor must be a
document class or a string
另一种方法是从设置中删除
SOCIAL\u AUTH\u USER\u MODEL
和AUTH\u USER\u MODEL
,但我不确定MongoEngine是否需要AUTH\u USER\u MODEL
设置。我没有测试它。导入mongo\u auth.MongoUser
有问题吗?你能试试吗:print get\u model('mongo\u auth','User')
?(get_model
位于django.db.models
)我从django.db.models中添加了。models导入get_model打印get_model('mongo_auth','User')
在settings.py的末尾,它返回了None
。但是我成功地导入了这个:print get_model('mongo_auth','MongoUser')
你是想这么说吗?这就是我想说的,可能是在fast中键入了注释。在你的安装的应用程序设置中mongo_auth
是在social_auth
之前还是之后定义的?它们都是定义的mongoengine.django.mongo_auth
和social_auth
。是否有可能MongoEngine的当前版本与Social Auth的结构不匹配,因为它是用0.6.10测试Social Auth的?可能classed中使用的方法在参数库中不匹配,比如MongoEngine的方法需要字符串,但Social Auth传递函数?我真的快疯了。
USER_MODEL_MODULE, USER_MODEL_NAME = 'mongoengine.django.auth.User'.rsplit('.', 1)
USER_MODEL = getattr(import_module(USER_MODEL_MODULE), USER_MODEL_NAME)