Есть ли возможность получить объекты отношения "ко-многим" при сохранении "родительского" объекта?

У меня есть три модели

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 есть ли какая-нибудь возможность добиться этого?

Вернуться на верх