如何在pre_save函数中更新另一个模型的字段?

时间:2019-07-09 11:45:36

标签: django model save signals pre

我有一个名为SPL的模型,该模型以固定的间隔获取新对象。每当它获得一个新对象时,函数pre_save信号就会调用“ process_data”函数。 在此功能中,我试图根据SPL模型对象的字段“时间”在另一个模型“索引”中更新字段“ leq_start”。该代码似乎有效,因为我没有收到任何错误,但是该字段没有更新。怎么了? 我还有一些基于post_save信号的其他功能,在这里效果很好...

我已经尝试了更新替代方法,但是那也不起作用。

Index.objects.filter(device_id=id_).update(leq_start=instance.time)
def process_data(sender, instance, **kwargs):
    id_ = instance.device_id
    num = instance.number
    # new code
    prevNum = Index.objects.get(device_id=id_).previous_nbr
    dP = num - prevNum
    if dP > 0:
        if prevNum == 0: 
            dT = 60
            b = Index.objects.get(device_id=id_)
            b.leq_start = instance.time
            b.save()
            instance.leq_60=instance.leq
            return
        else:
                ...

pre_save.connect(process_data, sender=SPL)

0 个答案:

没有答案