我遇到了这个错误current transaction is aborted, commands ignored until end of transaction block
,trace太长了,所以我打印出似乎导致错误的行
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进行过测试。
我认为问题来自:
user.groups.add(group)
对我来说,在保存用户之前,这似乎是不合法的。我认为"add"方法通过在m2m关系中创建一个新的元组来与数据库交互,而"user"没有id时,这是不可能的。此外,我在本文档中发现它引发了一个错误(不幸的是ValueError而不是DatabaseError)。
所以我认为你必须先保存你的用户,然后再管理它的关系。
让我知道这是否解决了你的问题!