J'ai donc deux modèles (Tables) liés par un ForeignKey. Dans l'admin, la page d'édition affiche le premier modèle (disons ModelOne) avec les instances connexes du second modèle, ModelTwo (TabularInline).Les formes de modèle en ligne émettent-elles des signaux post-enregistrement? (django)
Ce que je veux est d'effectuer des actions supplémentaires lorsque le deuxième modèle est en cours de modification. Je peux le faire avec un signal post_save sur ModelTwo. Cependant, le signal post_save n'est appelé que lorsque je sauvegarde le modèle depuis sa propre page d'édition (c'est-à-dire pas dans les inlines de ModelOne).
Y at-il un moyen d'attacher un signal post_save sur le formulaire en ligne de ModelTwo?
... Comme une solution de contournement j'ai ajouté une validation personnalisée à ModelTwo, qui est appelée indépendamment de si elle est en ligne ou non, pour appeler la méthode que je veux. Cependant, le problème qui découle de ce paramètre est que si je crée une nouvelle instance de ModelOne et crée également des instances de ModelTwo en même temps je ne peux pas accéder à la clé primaire (clé étrangère) de la nouvelle instance qui relie les deux tables (depuis il n'a pas encore été enregistré). Et la clé primaire est quelque chose dont j'ai besoin.
J'ai aussi essayé d'ajouter un signal post_save à ModelOne directement (pour que je puisse obtenir le PK de la nouvelle instance), mais il semble que le signal de post_save ne passe pas les données de ModelTwo (et pourquoi devrait-il, de toute façon?)
Alors, quelle est la solution à cela? Les modèles en ligne émettent-ils des signaux? Est-il possible d'accéder au PK de la nouvelle instance avant de l'enregistrer?
Oui, il semble que les signaux de post-sauvegarde ne sont envoyés que lorsque les formulaires sont réellement sauvegardés, c'est-à-dire que de nouvelles données arrivent ou que les données existantes ont changé. –