3

这是我的第一个示例代码mongodb

我正在尝试将我django的与mongodb. 我成功完成了我的注册部分,但是当我尝试登录时,它显示了一个错误页面。

TypeError at /accounts/login/
id must be an instance of (str, unicode, ObjectId), not type 'int'

我正在使用 django 用户身份验证,

这是我的网址 url(r'^accounts/login/', 'django.contrib.auth.views.login'),

以下是我的完整回溯,

TypeError at /admin/profile/
id must be an instance of (str, unicode, ObjectId), not <type 'int'>
Request Method: GET
Request URL:    http://www.myapp.com/accounts/login/
Django Version: 1.3
Exception Type: TypeError
Exception Value:    
id must be an instance of (str, unicode, ObjectId), not <type 'int'>
Exception Location: /home/sakeer/workspace/entevirtual/lib/python2.7/site-
packages/pymongo-2.4.2-py2.7-linux-x86_64.egg/bson/objectid.py in __validate, line 198
Python Executable:  /home/sakeer/workspace/entevirtual/bin/python
Python Version: 2.7.3
Python Path:    
['/home/sakeer/workspace/enteproject',
 '/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
 '/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg',
 '/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages/djangotoolbox-0.9.2-py2.7.egg',
 '/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages/django_mongodb_engine-0.4.0-py2.7.egg',
 '/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages/pymongo-2.4.2-py2.7-linux-x86_64.egg',
 '/home/sakeer/workspace/entevirtual/lib/python27.zip',
 '/home/sakeer/workspace/entevirtual/lib64/python2.7',
 '/home/sakeer/workspace/entevirtual/lib64/python2.7/plat-linux2',
 '/home/sakeer/workspace/entevirtual/lib64/python2.7/lib-tk',
 '/home/sakeer/workspace/entevirtual/lib64/python2.7/lib-old',
 '/home/sakeer/workspace/entevirtual/lib64/python2.7/lib-dynload',
 '/usr/lib64/python2.7',
 '/usr/lib/python2.7',
 '/usr/lib64/python2.7/lib-tk',
 '/home/sakeer/workspace/entevirtual/lib/python2.7/site-packages',
 '/home/sakeer/workspace/enteproject/lib',
 '/home/sakeer/workspace/enteproject/lib']

我在哪里和缺少什么

4

1 回答 1

2

似乎是 Django 中的一个错误,它假定用户 ID 始终是整数,这对于关系数据库来说是有意义的。在使用 Mongodb 的情况下,键或 _id 将是一个对象 ID。

这方面有一些开放的错误,似乎再次弹出(例如,这个https://code.djangoproject.com/ticket/14881)。目前,我在 django 用户帐户中添加了一条评论(https://github.com/pinax/django-user-accounts/issues/103),这似乎很合适。

它可能需要一个补丁来修复。

奇怪的是,我让它与 django 1.5 和 mongoengine 一起工作,但是在升级到 django 1.6.1 之后,问题又回来了。

于 2014-02-04T18:30:33.167 回答