如何在django中修改绑定形式的字段的绑定值?

can*_*dry 11 django

我重写了__init__表单的方法.我可以通过执行以下操作来设置初始值:

self.fields['fieldname'].initial = ....
Run Code Online (Sandbox Code Playgroud)

但鉴于它受到约束,调用上述内容无效.我试过这样做:

self.fields['fieldname'].bound_data = ....
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有没有办法做到这一点 ?

Ala*_*air 12

您可以更新表单的data字典

self.data['fieldname'] = new_value
Run Code Online (Sandbox Code Playgroud)

bound_data 是一个方法,而不是一个属性,所以你不能在那里设置值.

request.GET并且request.POST是不可变的,除非你创建一个copy().您可以在__init__方法中或绑定表单之前执行复制.

data = request.POST.copy()
form = MyForm(data=data)
Run Code Online (Sandbox Code Playgroud)

  • @mgalgs`self.data`是你用它构造表单的数据.如果你使用像`request.POST`这样的不可变对象,它将只是不可变的. (3认同)
  • 我试过这个并抛出错误:`这个QueryDict实例是不可变的` (2认同)