2010-10-13 15 views
46

Mon modèle a plusieurs champs booléens. Je les ai cassés en 3 séries que je rends comme MultipleChoiceField w/a modifié CheckboxSelectMultiple.Django: comment remplacer form.save()?

Maintenant, j'ai besoin de sauvegarder ces données dans la base de données. c'est-à-dire que j'ai besoin de diviser les données renvoyées par un même widget en plusieurs colonnes booléennes. Je pense que cela est approprié pour la méthode save(), non?

La question est, comment je fais je le fais? Quelque chose comme ça?

def save(self, commit=True): 
    # code here 
    return super(MyForm, self).save(commit) 

Si oui ... Comment définir les valeurs?

self.fields['my_field'].value = 'my_flag' in self.cleaned_data['multi_choice'] 

Ou quelque chose? Où toutes les données sont-elles stockées?

+0

Ou peut-être ce * devrait * dans 'si je suis non polluants simplement modifier la' cleaned_data' ... – mpen

Répondre

77

L'endroit où vous voulez que vos données soient stockées est votre nouvelle instance de modèle:

def save(self, commit=True): 
    instance = super(MyForm, self).save(commit=False) 
    instance.flag1 = 'flag1' in self.cleaned_data['multi_choice'] # etc 
    if commit: 
     instance.save() 
    return instance