Подтвердить что ты не робот

Django: Как переопределить form.save()?

В моей модели имеется довольно много логических полей. Я разбил их на 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']

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

4b9b3361

Ответ 1

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

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