Найти - Пользователи
Полная версия: При сохранении в БД и немедленном вызове объект остается прежним
Начало » Django » При сохранении в БД и немедленном вызове объект остается прежним
1
Oleg_Sizon
Всем привет!
Мой код в 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
Суть в том, что после сохранения объекта LB, мне нужно сразу провести итерацию по всем объектам LB и получается, что объект остается прежним. Если делать не LB.objects.all(), а LB.objects.get(id=37), то приходит уже измененным, версия 4.0.0
VadimK
Я бы делал такое на сигналах post_save
А так только включить логирование запросов в бд и посмотреть как и что твориться. Возможно такой запрос уже исполнялся и лежит в кеше.
Oleg_Sizon
Приветствую! С post_save ситуация точно такая же, что также показалось мне весьма странным. Но я уже вышел другим способом - создал отдельный процесс, периодически дергающий функцию save_tree. В функции оценивается, произошли ли изменения относительно прошлой конфигурации, если да, то выполняются необходимые действия.
m0nte-cr1st0
Есть refresh_from_db
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB