Django+;使用MongoDB引擎的MongoDB返回多个对象

Django+;使用MongoDB引擎的MongoDB返回多个对象,django,session,mongodb,pymongo,Django,Session,Mongodb,Pymongo,当我访问localhost:8000/admin时,会显示错误 '多个对象在/admin处返回/ get()返回了多个会话--它返回了2!查找参数为{'session_key':'ee5a8be487352e42a89f962ee4ab22a6','expire_date_gt':datetime.datetime(2011,7,8,5,38,36645053)}' 如果访问mongodb并删除collection django_会话中的一行,它会工作,但过了一段时间后,会出现相同的错误,因为它

当我访问localhost:8000/admin时,会显示错误 '多个对象在/admin处返回/ get()返回了多个会话--它返回了2!查找参数为{'session_key':'ee5a8be487352e42a89f962ee4ab22a6','expire_date_gt':datetime.datetime(2011,7,8,5,38,36645053)}'

如果访问mongodb并删除collection django_会话中的一行,它会工作,但过了一段时间后,会出现相同的错误,因为它是在collection django_会话中创建的另一个文档

更新:即使在浏览器中,我也删除了存储会话id的cookie,这样我就可以顺利运行页面。然后,当我刷新或单击链接时,我得到返回的多对象错误


mongodb engine for django尝试为每次页面刷新添加会话id,这是否是一个问题。

默认情况下,mongodb在
\u id
字段上创建唯一索引。但是,看起来您使用的是
session\u键
字段,默认情况下该字段不是唯一的,这可能解释了如何获得两个条目

查看正在使用的索引:
/mongo localhost:8000/admin--eval“db.system.indexes.find()”
,看看这是否仅仅是索引问题。有关创建唯一索引的信息如下所示


您可能还想看看创建
django_会话
文档的代码。他们可能做了一些“不太正确”的事情,导致了错误。

我联系了django mongodb引擎的负责人,他错过了将django.contrib库(django的管理库属于它)添加到测试中。他添加了修复程序,现在您可以通过该程序访问admin,而无需获得mulipleobjectreturned错误

这是修复问题()的提交:

希望这对其他人有帮助