# The model
class UserManager(models.Manager):
def create_user(self, temp_user_id):
new_user = self.create(require data)
# insert row to model B
# The model manager
class User(models.Model):
# model fields
objects = UserManager()
# Post save signal handler
def send_notification_to_user(sender, instance, created, **kwargs):
# send sms notification to the newly created user
signals.post_save.connect(send_notification_to_user, sender=User)
# The view
class UserView(APIView):
def post(self, request, format=None):
try:
with transaction.atomic():
c_user = User.objects.create_user(request.data["temp_reg_id"])
return Response(status=status.HTTP_201_CREATED)
except Exception as e:
return Response(status=status.HTTP_400_BAD_REQUEST)
在这种情况下,如果用户注册,则用户获得短信。但是在这里我在事务中运行模型管理器,所以如果以某种方式#插入行到模型B指令失败,那么所有数据库都将回滚。问题是在这种情况下用户将获得帐户创建短信,这是不正确的。我怎样才能克服这个问题或哪种方法会更好?我的英语不好,你可以问我更多解释。