返回用户后是否保存在数据库中?

问题描述 投票:1回答:1

这里我实质上使用的是Django Cookie切割器,为了能够保存我必须以这种方式进行处理的自定义形状标志,它可以正常工作,我不确定这是正确的处理方法,但我只找到了这种方法。我也使用def Signup()进行了测试,但没有结果,但是我意识到,对于该测试,用户没有直接保存在数据库中,因此在alt_user和alt_user.name之间放置了一个计时器。我注意到User.object.get给了我用户,并且我可以修改其余的用户信息。但是,当我查看数据库时,仅在用户返回后才完成用户的备份。在备份之前是否缓存了用户?它带来的问题是,保存在Alt_user.save()之后,如果是在芹菜任务中,我将发送它的ID以进行更长的计算,在此先感谢您]

User = get_user_model()

class CustomSignupForm(SignupForm):
    name = CharField( max_length=255)
    forename = CharField( max_length=255)
    street = CharField( max_length=255)
    street_number = IntegerField()
    city = CharField(max_length=255)
    country = CountryField().formfield()
    phone_number = IntegerField()
    date_of_birth = DateField()
    affiliate_link = IntegerField(required=False)
    class Meta:
        model = get_user_model()  # use this function for swapping user model

    def save(self, request):
        # Ensure you call the parent class's save.
        # .save() returns a User object.
        user = super(CustomSignupForm, self).save(request)
        alt_user = User.objects.get(pk=user.id)
        time.sleep(30)
        alt_user.name = self.cleaned_data['name']
        alt_user.forename = self.cleaned_data['forename']
        alt_user.street = self.cleaned_data['street']
        alt_user.street_number = self.cleaned_data['street_number']
        alt_user.city = self.cleaned_data['city']
        alt_user.country = self.cleaned_data['country']
        alt_user.phone_number = self.cleaned_data['phone_number']
        alt_user.date_of_birth = self.cleaned_data['date_of_birth']
        alt_user.save()
        calculate_user_in_matrix.delay(alt_user.id)
        return user

这里我实质上使用的是Django Cookie切割器,为了能够保存我必须以这种方式进行处理的自定义形状标志,它可以正常工作,我不确定这是正确的处理方法,但我只找到了这种方法。我...

django python-3.x django-allauth
1个回答
0
投票

问题是您的代码在数据库事务中运行。如果您的Celery工作人员迅速处理任务,则该事务尚未提交。您刚刚创建的用户在提交之前在事务外部不可见。

© www.soinside.com 2019 - 2024. All rights reserved.