【发布时间】:2012-05-08 13:23:29
【问题描述】:
在我的 Satchmo 项目中,我有一个严重的错误,即 contact_contact 表中的一行被重新分配给新用户。
如果我在一个浏览器窗口中登录商店,然后(在另一个新窗口中)通过浏览 /accounts/register/ 创建一个新帐户,就会发生这种情况。如果我先注销就不会发生这种情况。
数据库中发生的事情是我登录的原始用户(他的用户配置文件全部设置)“丢失”了他的用户配置文件。发生的事情是该用户的“联系人”不再存在,因为它现在“指向”新用户。即它的user_id 字段现在指向auth_user 中的新'id'。联系人记录的内容会被新用户的信息覆盖。
除了更改registration_form.html之外,我没有对Satchmo中的登录代码进行任何更改
有没有可能是注册表正在从POST请求中读取部分用户信息,并接管了属于之前用户的联系人?
我重现了故障,然后对数据库进行了“比较”。这是确凿的证据:
+INSERT INTO "auth_user" VALUES(138,'newuser','New','User','y@n.org',...
-INSERT INTO "contact_contact" VALUES(1,'','Old','User',2,'Customer',NULL,'1999-01-01','x@n.org','','2012-04-30');
+INSERT INTO "contact_contact" VALUES(1,'','New','User',138,'Customer',NULL,'1999-02-02','y@n.org','','2012-04-30');
您可以清楚地看到 a) 记录号 1 正在被重复使用,并且 b) 它现在指向使用 id 138 创建的新用户。
非常感谢, 托马斯
【问题讨论】:
-
也许我需要了解的知识较少,但您介意展示一些代码示例,您的部件如何相互通信吗?仅从文本中我什么都不懂。