在我的 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 创建的新用户。
非常感谢,托马斯