Django发布保存信号,每个请求调用两次

时间:2018-10-30 04:20:31

标签: django django-models django-signals django-2.0

我正在使用Django 2.x

我有一个模型 TransactionLog ,该模型记录了给定和更新的金额。 每次给出金额时,都会在 AmountGiven 模型中创建一条新记录,因此将创建一个具有给出操作的日志,如果更新了较早的给定金额,它将记录动作已更新

@receiver(post_save, sender=AmountGiven)
def amount_given_post_save_receiver(sender, instance, created, **kwargs):
    if created:
        action = 'given'
    else:
        action = 'updated'

    TransactionLog.objects.create(
        user=instance.contact.user,
        contact=instance.contact,
        amount_given=instance,
        amount=instance.amount,
        action=action
    )

但是即使创建新记录,post save接收方也会被调用两次或两次以上。然后,一条记录另存为action=given TransactionLog 中,而其他记录则在 TransactionLog 模型中创建action=updated记录。

如何使它对于每个呼叫都是唯一的?

0 个答案:

没有答案