Django - получение значений из набора форм
Я пытался получить значение из набора форм, произвести некоторые вычисления и передать результат. Мой код таков:
def form_valid(self, form, formset):
rndid2 = RndIds()
form.instance.doc_added_by = self.request.user
form.instance.doc_guid = rndid2.random_doc_guid()
instances = formset.save(commit=False)
for instance in instances:
cd = instance.cleaned_data()
at_id=cd.get('att_guid')
instance.att_added_by = str(self.request.user)
instance.att_ctrl_sum = rndid2.random_doc_application_id(at_id)
instance.save()
return HttpResponseRedirect(self.get_success_url())
Но получил ошибку
'Att' object has no attribute 'cleaned_data'
Att - моя модель
Как я могу получить значения набора форм?
Ответ прост, как только вы вызвали метод сохранения formset save method с commit=False. Все возвращаемые экземпляры - это объекты, полученные в результате работы с набором форм. Поэтому, поскольку у экземпляров модели нет свойства clean_data (только у Forms), вы получаете ошибку.
Чтобы решить эту проблему, измените for на следующее:
for instance in instances:
at_id=instance.att_guid
instance.att_added_by = str(self.request.user)
instance.att_ctrl_sum = rndid2.random_doc_application_id(at_id)
instance.save()