Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » При сохранении в БД и немедленном вызове объект остается прежним [RSS Feed]

#1 Апрель 22, 2022 11:50:54

Oleg_Sizon
Зарегистрирован: 2015-02-28
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

При сохранении в БД и немедленном вызове объект остается прежним

Всем привет!
Мой код в 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

Отредактировано Oleg_Sizon (Апрель 22, 2022 11:59:39)

Офлайн

#2 Апрель 27, 2022 11:49:15

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

При сохранении в БД и немедленном вызове объект остается прежним

Я бы делал такое на сигналах post_save
А так только включить логирование запросов в бд и посмотреть как и что твориться. Возможно такой запрос уже исполнялся и лежит в кеше.

Офлайн

#3 Май 6, 2022 06:05:30

Oleg_Sizon
Зарегистрирован: 2015-02-28
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

При сохранении в БД и немедленном вызове объект остается прежним

Приветствую! С post_save ситуация точно такая же, что также показалось мне весьма странным. Но я уже вышел другим способом - создал отдельный процесс, периодически дергающий функцию save_tree. В функции оценивается, произошли ли изменения относительно прошлой конфигурации, если да, то выполняются необходимые действия.

Офлайн

#4 Май 15, 2022 18:42:58

m0nte-cr1st0
Зарегистрирован: 2019-02-03
Сообщения: 49
Репутация: +  2  -
Профиль   Отправить e-mail  

При сохранении в БД и немедленном вызове объект остается прежним

Есть refresh_from_db

Офлайн

  • Начало
  • » Django
  • » При сохранении в БД и немедленном вызове объект остается прежним[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version