Джанго: Как переопределить form.save ()? - PullRequest
55 голосов
/ 13 октября 2010

В моей модели довольно много логических полей.Я разбил их на 3 набора, которые я рендерил как MultipleChoiceField с измененным CheckboxSelectMultiple.

Теперь мне нужно сохранить эти данные обратно в БД.т.е. мне нужно разбить данные, возвращаемые одним виджетом, на несколько логических столбцов.Я думаю, что это подходит для метода save(), нет?

Вопрос в том, как мне это сделать?Как то так?

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

Если так ... как мне установить значения?

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

Или что-то? Где хранятся все данные?

1 Ответ

93 голосов
/ 14 октября 2010

Место, где вы хотите хранить ваши данные, - это экземпляр вашей новой модели:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...