Форум сайта python.su
Всем привет!
Мой код в models.py:
class LB(models.Model): name = models.CharField('Имя (hostname)', max_length=128, unique=True) ip_address = models.CharField('Management IP', max_length=128, default=False) port = models.PositiveIntegerField('Management port', default=50051) description = models.CharField('Описание', max_length=256, null=True) lb_units = models.ManyToManyField( LBU, through='BalancerUnits', through_fields=('lb', 'lbu') ) def save(self, *args, **kwargs): super(LB, self).save(*args, **kwargs) save_tree() def save_tree(): all_lb = LB.objects.all() all_bu = BalancerUnits.objects.all() all_lbureals = LBUReal.objects.all() # ... calculating tree
Отредактировано Oleg_Sizon (Апрель 22, 2022 11:59:39)
Офлайн
Я бы делал такое на сигналах post_save
А так только включить логирование запросов в бд и посмотреть как и что твориться. Возможно такой запрос уже исполнялся и лежит в кеше.
Офлайн
Приветствую! С post_save ситуация точно такая же, что также показалось мне весьма странным. Но я уже вышел другим способом - создал отдельный процесс, периодически дергающий функцию save_tree. В функции оценивается, произошли ли изменения относительно прошлой конфигурации, если да, то выполняются необходимые действия.
Офлайн
Есть refresh_from_db
Офлайн