У меня есть модель под названием SPL, которая получает новые объекты через фиксированный интервал. Каждый раз, когда он получает новый объект, функция «process_data» вызывается сигналом pre_save.
В этой функции я пытаюсь обновить поле «leq_start» в другой модели «Индекс» на основе поля «время» объекта модели SPL. Код работает, потому что я не получаю никакой ошибки, но поле не обновляется. В чем дело?
У меня есть некоторые другие функции, основанные на сигнале 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)