2011-07-09 48 views
1

当我访问本地主机:8000 /管理员给我错误 '//admin/ getObjectsReturned get()返回多个会话 - 它返回2!查找参数为{'session_key':'ee5a8be487352e42a89f962ee4ab22a6','expire_date__gt':datetime.datetime(2011,7,8,5,38,36,645053)}'Django + MongoDB使用mongodb引擎给出多个对象返回

如果访问mongodb并删除其中一行在收集django_session它的作品,但过了一段时间给了我相同的错误,因为它是在集合中创建另一个文档django_session

更新:即使在浏览器中我删除了存储会话ID的cookie,然后我能够运行页面顺利。然后当我刷新或点击链接我得到多个对象返回错误。

这是django的mongodb引擎的一个问题,它试图为每个页面刷新添加会话id。

回答

1

默认情况下,MongoDB在_id字段上创建唯一索引。但是,它看起来像使用session_key字段,默认情况下该字段不是唯一的,这可能解释您如何获取两个条目。

查看正在使用的索引:./mongo localhost:8000/admin --eval "db.system.indexes.find()"并查看这不仅仅是索引问题。有关创建唯一索引的信息是here

您可能还想看看创建django_session文档的代码。他们可能会做一些“不完全正确”的事情导致错误。