0

在我的 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 创建的新用户。

非常感谢,托马斯

4

1 回答 1

0

我很确定这是 Satchmo 中的一个错误。这是我的修复:

diff -paurb src.orig//satchmo/satchmo/apps/satchmo_store/accounts/views.py src//satchmo/satchmo/apps/satchmo_store/accounts/views.py
--- src.orig//satchmo/satchmo/apps/satchmo_store/accounts/views.py    2012-03-30 07:42:40.000000000 +0200
+++ src//satchmo/satchmo/apps/satchmo_store/accounts/views.py   2012-05-09 07:33:01.000000000 +0200
@@ -194,7 +194,7 @@ def register_handle_form(request, redire
     if request.method == 'POST':
         form = RegistrationForm(request.POST)
         if form.is_valid():
-            contact = form.save(request)
+            contact = form.save(request,force_new=True)

             # look for explicit "next"
             next = request.POST.get('next', '')
于 2012-05-09T05:38:25.367 回答