1

我遇到了这个错误current transaction is aborted, commands ignored until end of transaction block,回溯太长了,所以打印出似乎导致错误的行,

File "/home/matsinvasion/food4less/restaurant_detail/views.py" in pre_save
  176.          user=User.objects.create(username=obj.restaurant_detail.email,email=obj.restaurant_detail.email)

这是生成错误的部分(很长)

user=User.objects.create(username=obj.restaurant_detail.email,email=obj.restaurant_detail.email)

user.email_user(
    "F4L account activation",
    "Your membership to F4L has been approved go to the following link to activate your account \n \n http://f4l.herokuapp.com/restaurant_detail/restaurant/activate/%s/ \n \n After you have activated your account, login using your full email address as username and your password \n \n And customize what will be published on your F4L website profile by click profile link on the left of members \n \n This email is generated by the F4L website do not reply to it. " % obj.token,"website@f4l.herokuapp.com"
)
group=Group.objects.get(name='Restaurants')
user.groups.add(group)
user.first_name=userapp.first_name
user.last_name=userapp.last_name
user.email=userapp.email
user.set_unusable_password()
user.save()

obj.user=user
obj.is_active=False
obj.save()
return obj

现在最让我困惑的是,这在 sqlite 上运行良好,但是当我切换到 postgresql 时,出现了这个错误。

我看过这里(DatabaseError:当前事务被中止,命令被忽略直到事务块结束)和这里(Django + Postgres:“当前事务被中止,命令被忽略直到事务块结束”)但没有白费。你建议我如何解决这个错误?

编辑:环顾四周后,我意识到错误是由正在使用的库引起的,并且从未用 postgres 测试过。

4

1 回答 1

0

我认为问题来自:

user.groups.add(group)

对我来说,在保存用户之前,这似乎并不合法。我认为“add”方法通过在 m2m 关系中创建一个新元组来与数据库交互,而当“user”没有 id 时这是不可能的。此外,我在本文档中发现它引发了一个错误(不幸的是 ValueError 而不是 DatabaseError)。

所以我认为你必须在管理它的关系之前保存你的用户。

让我知道这是否解决了您的问题!

于 2013-04-19T10:29:59.423 回答