Есть ли возможность получить объекты отношения "ко-многим" при сохранении "родительского" объекта?
У меня есть три модели
class Parent(models.Model):
name = models.CharField(blank=True, max_length=20)
... # other fields
def _get_childs(self):
first_childs = [f'{child.name}' for child in self.one_childs.all()]
second_childs = [f'{child.name}' for child in self.two_childs.all()]
return [first_childs + second_childs]
@classmethod
def get_config(cls) -> str:
try:
instance = cls.objects.get()
except cls.DoesNotExist:
return ''
config = {}
for child in instance._get_childs():
config[child] = {
'interval': 1000,
... # other fields
}
return json.dumps(config, indent=4)
class OneChild(models.Model):
name = models.CharField(blank=True, max_length=20)
parent = models.ForeignKey(Parent, on_delete=models.SET_NULL, blank=True, null=True, related_name='one_childs')
... # other fields
class TwoChild(models.Model):
name = models.CharField(blank=True, max_length=20)
parent = models.ForeignKey(Parent, on_delete=models.SET_NULL, blank=True, null=True, related_name='two_childs')
... # other fields
Мне нужно записать результат get_config в файл ('/tmp/config' как пример) при сохранении родителя. все работает хорошо, но я получаю предыдущие дочерние отношения, а не новые. я пытался использовать это в сигнале post_save для модели Parent, но это не помогает. есть сигнал для примера
@receiver(post_save, sender=Parent)
def update_config(sender, instance, **kwargs):
config_json = instance.get_config()
file_path = '/tmp/config.json'
with open(file_path, 'w') as file:
file.write(config_json)
когда я сохраняю Parent, все значения становятся действительными, кроме child.name есть ли какая-нибудь возможность добиться этого?