小编Oli*_*mbs的帖子

Django save() 方法不保存

当进行新投资时,我使用信号来更新配置文件表中的字段。

在 update_users_investments 函数中使用了许多打印语句后,我可以看到该函数正在被调用并且正在执行正确的计算。

但是,它没有保存到数据库,也没有错误。

你能明白为什么它不保存吗?还有更好的方法来调试 save 方法吗?我环顾四周,看不到任何东西,不知道为什么它没有保存,这非常令人沮丧。

在我的代码的其他地方,我使用类似的信号保存到看起来工作正常的其他表。

信号

@receiver(post_save, sender=Investment)
def update_users_investments(sender, instance, created, **kwargs):
    user = Profile.objects.get(user=instance.user.user)
    total_investments = user.total_invested
    investment = instance.transaction_type * instance.price * instance.number_shares
    user.total_invested = total_investments + investment
    user.save()
Run Code Online (Sandbox Code Playgroud)

要保存的模型:

class Profile(models.Model):

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    total_invested = models.DecimalField(max_digits=5, decimal_places=2)
    cash_avaliable = models.DecimalField(max_digits=5, decimal_places=2,
                                     null=True)
Run Code Online (Sandbox Code Playgroud)

投资模型(信号的来源):

class Investment(models.Model):

"""Model representing each investment made by users"""

    user = models.ForeignKey(Profile, on_delete=models.DO_NOTHING)

    team_code = models.ForeignKey(Team,
                           on_delete=models.DO_NOTHING)

    transaction_type = models.IntegerField(choices=((-1, "Sell"), (1, "Buy")),
                                       help_text="Show whether …
Run Code Online (Sandbox Code Playgroud)

django django-signals django-models

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

django ×1

django-models ×1

django-signals ×1