Je prévois de sérialiser un modèle Django en XML lorsqu'il est sauvegardé ou mis à jour. (Le XML va être importé dans un film flash). Est-il préférable d'écouter un signal post_save() ou pre_save(), puis d'effectuer la sérialisation, ou de simplement le gérer dans le modèle save() methonStyle - Quand sérialiser un modèle Django Instance: signaux par rapport à la méthode de sauvegarde du modèle
Répondre
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 .
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.
- 1. Signaux Django vs méthode de sauvegarde prioritaire
- 2. Comment sérialiser une instance de modèle dans Django?
- 3. Raising ValidationError à partir de la méthode de sauvegarde du modèle django?
- 4. Comment puis-je sérialiser un modèle de rapport DevExpress XtraReport?
- 5. ajouter une requête à la méthode du modèle django?
- 6. Problème de sauvegarde du modèle dans Rails
- 7. Quand utiliser Modèle de méthode d'usine?
- 8. Python Django Modèle: Itérer par la liste
- 9. Django: Nom du modèle clash
- 10. Obtention du nom de modèle dans le modèle django
- 11. Modèle .Net Modèle de moteur/rapport
- 12. Comment définir le champ du modèle django par son nom?
- 13. modèle méthode modèle
- 14. Django: Commander un modèle par un champ many-to-many
- 15. Spécification de l'ordre de tri du modèle associé à Django
- 16. Equivalent de Signaux Django pour Rails?
- 17. Problème avec/Confused par la prochaine méthode (modèle) de Java.util.Scanner
- 18. Modèle Django définir la clé étrangère à un champ d'un autre modèle
- 19. Django étend le modèle
- 20. Comment fonctionnent les champs du modèle Django?
- 21. Django: accéder à l'instance du modèle depuis ModelAdmin?
- 22. Ordre de tri par défaut du modèle Django à l'aide du champ de table associé
- 23. où mettre la méthode qui fonctionne sur un modèle
- 24. itération des attributs de modèle lors de la création d'un modèle dans Django
- 25. Demande d'utilisateur modèle Django
- 26. Problème lors de la création du modèle ActiveRecord: données manquantes de la sauvegarde
- 27. état de l'objet dans le modèle de conception de la méthode du modèle
- 28. Pouvez-vous accéder à un modèle classé subbed à l'intérieur du modèle de super-classe dans l'ORM de Django?
- 29. Modèle de rapport d'état de progression
- 30. Méthode d'extension de performance par rapport à la méthode d'instance
"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. –