【问题标题】:django - get values from formsetdjango - 从表单集中获取值
【发布时间】:2022-09-25 04:47:06
【问题描述】:

我试图从 formset 中获取值做一些计算并传递输出。 我的代码是:

    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是我的模特

如何获取表单集值?

  • 我认为您还没有调用super() 并更新完整的回溯。

标签: python django


【解决方案1】:

答案很简单,只要您使用 commit=False 调用 formset save method。所有返回的实例都是表单集产生的对象。因此,由于模型实例没有 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()

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2021-09-04
    • 2022-01-22
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多