Style - Quand sérialiser un modèle Django Instance: signaux vs méthode de sauvegarde du modèle

StackOverflow https://stackoverflow.com/questions/131327

  •  02-07-2019
  •  | 
  •  

Question

Je prévois de sérialiser un modèle Django en XML lors de son enregistrement ou de sa mise à 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 simplement de le gérer dans le modèle save () du modèle

Était-ce utile?

La solution

S'il s'agit d'une fonctionnalité essentielle pour l'enregistrement du modèle, vous souhaitez l'inclure dans la méthode d'enregistrement. Toutefois, si vous avez déjà un modèle qui fonctionne et que vous souhaitez l’étendre à d’autres fins, les signaux sont votre meilleur atout car ils permettent des modules correctement découplés.

Un bon exemple pourrait consister à ajouter la journalisation des événements à votre site. Vous devez donc simplement écouter les signaux qui signifient un événement plutôt que de modifier le code du site d'origine.

post_save () est généralement préférable, car cela signifie que le modèle a été correctement sauvegardé. L'utilisation de pre_save () ne garantit pas la réussite de la sauvegarde et ne doit donc pas être utilisée pour quoi que ce soit qui dépend de la sauvegarde.

Autres conseils

Enregistrement de post. Ainsi, les nouvelles données (raison de la sérialisation) sont déjà dans la base de données. Cela vous donnera un morceau de code beaucoup plus propre qui prend simplement dans la base de données et ne doit pas s'inquiéter d'ajouter une valeur supplémentaire.

L’autre façon de penser est de maintenir le fichier XML en parallèle avec la base de données. C'est-à-dire que, dans votre save (), ajoutez les données à la base de données et au fichier XML. Cela aurait beaucoup moins de frais généraux si vous avez affaire à d'énormes tables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top