在重新显示之前更改formset数据的形式

时间:2017-06-02 21:48:33

标签: django django-forms

我们有表单cleaning_data和表单实例,如果我更喜欢重新显示表单并且不知道如何更新建议的属性,我不知道django使用了什么。

计划在验证后执行一些业务逻辑并重新显示它。

if formset.is_valid():
    #do something with forms in formset and redisplay it.
    #maybe, alter forms data 
    return render(.....)

如何更改表单值并在验证后将其重新显示给用户。 我看到的所有示例都会更改表单实例的值,然后将其保存到db。我希望在更改后将其显示给用户。

我的真实代码,简化。

这不起作用。

if formset.is_valid():
    formset.forms[0]['price'] = 15        
    return render(.....)

这也不起作用。

if formset.is_valid():
    setattr(formset.forms[0],'price',15)       
    return render(.....)

这也不起作用。

if formset.is_valid():
    setattr(formset.forms[0].instance,'price',15)       
    return render(.....)

它们都渲染相同,而不是price = 15 formsets。

更新-------->

if formset.is_valid():
    formset.data['formset_prefix-0-price'] = 15

这使得formset的第一个表单以15的价格呈现,但由于实例未被修改,因此当我保存表单时,它将以之前的值保存。

在is_valid之后,我需要一种正确的方法来修改formset。重新表达表格或之后保存。

0 个答案:

没有答案