django尝试导致IntegrityError的异常语句:

ApP*_*PeL 0 django django-views

我们在我们的系统上使用paypal来检查用户之前是否已付款且已有帐户.今天早上我收到了一个基本上给我一个完整性错误的追溯.

IntegrityError:(1062,"重复输入'user_1234_before'为密钥2")

我的状态如下.

try:
    user = User.objects.get(email=ipn_obj.payer_email)
except:
    user_slug = ("%s_%s_before") % (ipn_obj.first_name, ipn_obj.last_name)
    username = slugify(user_slug)
    user = User.objects.create_user(username, ipn_obj.payer_email, 'testpassword')
    user.first_name = ipn_obj.first_name
    user.last_name = ipn_obj.last_name
    user.save()
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Dan*_*man 5

永远不要使用空白的except陈述.这里发生的事情是对原因的一个很好的证明.

你可能会使用try/except块来捕获User.DoesNotExist异常.但是,您的代码实际上提出了一个完全不同的异常.因为你正在吞咽它,所以不可能知道哪一个,但可能ipn_obj不是你认为它并且没有payer_email错误,所以你得到了AttributeError.或者,可能是你得到了User.MultipleObjectReturned例外.

将您更改exceptexcept User.DoesNotExist,然后调试您的实际问题.