1

当我访问 localhost:8000/admin 给我错误“MultipleObjectsReturned at /admin/get() 返回了多个会话 - 它返回了 2!查找参数为 {'session_key': 'ee5a8be487352e42a89f962ee4ab22a6', 'expire_date__gt': datetime.datetime(2011, 7, 8, 5, 38, 36, 645053)}'

如果访问 mongodb 并删除集合 django_session 中的一个行,它可以工作,但过了一会儿给了我同样的错误,因为它是在集合 django_session 中创建的另一个文档

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

这是 django 的 mongodb-engine 的问题吗,它尝试为每次页面刷新添加会话 ID。

4

2 回答 2

1

我联系了负责 django-mongodb-engine 的作者,他错过了将 django.contrib 库(django 的管理库属于其中。)添加到测试中。他添加了修复程序,现在您可以通过该修复程序访问管理员而不会收到 mulipleobjectreturned 错误。

这是解决问题的提交https://github.com/django-mongodb-engine/mongodb-engine/issues/53):https://github.com/django-mongodb-engine/mongodb-engine/提交/a0ab9c3f7c378828c2800b8f62f67c8e21255835

希望这对其他人有帮助。

于 2011-07-12T07:35:13.647 回答
1

默认情况下,MongoDB 在_id字段上创建唯一索引。但是,您似乎正在使用该session_key字段,默认情况下该字段不是唯一的,这可以解释您如何获得两个条目。

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

您可能还想查看创建django_session文档的代码。他们可能正在做导致错误的“不太正确”的事情。

于 2011-07-10T06:55:10.793 回答