2012-08-10 2 views
2

Quel est le moment approprié pour effectuer une validation sur des champs connexes dans un modèle? Par exemple, si j'ai une vidéo de classe qui a une relation ManyToMany avec une liste de lecture de classe, lorsque la vidéo est changée en «privée», elle doit être supprimée de toutes les listes de lecture. Faire cela dans la méthode clean() du modèle semble dangereux - puisque le modèle pourrait échouer à la validation et ne pas enregistrer, mais les références de la liste de lecture auront été supprimées.Validation de modèle Django sur des champs connexes

Le fait dans un signal post_save ou pre_save le bon chemin à parcourir?

+0

On dirait une bonne idée, ou vous pourriez écraser la méthode de sauvegarde (moins bonne idée IMHO). –

+0

Je ferais ceci est un signal post_save. – Brandon

Répondre

0

Vous avez deux choix:

premier utilise un signal post_save qui fait le travail. Pas un pre_save, parce que la sauvegarde peut échouer et je suppose que vous ne voulez faire cela que si la sauvegarde a bien fonctionné.

Autre option est PRÉPONDÉRANTS méthode de modèle save() comme:

def save(self, *args, **kwargs): 
    super(MyModel, self).save(*args, **kwargs) 
    # do stuff for removing whatever you want to remove 

Mon choix personnel est le premier parce que vous traitez avec différents modèles. Si vous avez seulement besoin de faire face à l'actuel, je vais faire le second. Mais c'est juste une pensée personnelle.

Questions connexes