2008-09-25 4 views

Répondre

2

Si c'est la fonctionnalité de base pour enregistrer le modèle, vous le voulez dans le cadre de la méthode de sauvegarde. Cependant, si vous avez déjà un modèle qui fonctionne et que vous voulez l'étendre à d'autres fins, alors les signaux sont votre meilleur choix car ils permettent des modules correctement découplés. Un bon exemple pourrait être que vous voulez ajouter l'enregistrement d'événement à votre site, ainsi vous écoutez simplement les signaux qui signifient un événement plutôt que de modifier le code de site d'origine. Post_save() est généralement préférable car cela signifie que le modèle a été enregistré avec succès, en utilisant pre_save() ne garantit pas que la sauvegarde sera réussie, donc ne devrait pas être utilisé pour tout ce qui dépend de la sauvegarde en cours d'achèvement .

0

Post save. De cette façon, les nouvelles données (la raison de l'exécution de la sérialisation) sont déjà dans la base de données. Cela va créer un peu plus propre de code qui prend simplement de la base de données et n'a pas à s'inquiéter de l'ajout d'une valeur supplémentaire. L'autre façon qui vient à l'esprit est de maintenir le fichier XML en parallèle à la base de données. C'est-à-dire, dans votre save() ajouter les données à la base de données, et au fichier xml. Cela aurait beaucoup moins de frais si vous traitez avec des tables énormes.

+0

"Les données déjà dans la base de données" ne rendent pas le code plus propre. Dans les deux cas, vous voulez extraire les données de l'objet modèle, vous ne faites pas de déplacement supplémentaire dans la base de données. Post_save est la bonne réponse, mais @Andrew Ingram a raison. –

Questions connexes