我有这个工作代码
f = SomeForm(request.POST)
当我尝试将其修改为
时f = SomeForm(request.POST, initial={'spam', 4})
它没有用,'初始'没有被选中('spam'是一个ModelChoiceField),但当我尝试
f = SomeForm(initial={'spam', 4})
它有效(选择的值是正确的)。我在这里错过了什么吗?如果重要的话,那就是 init 方法看起来像什么
def __init__(self, *a, **ka):
super(SomeForm, self).__init__(*a, **ka)
....#more codes
有没有办法让初始数据工作而不必删除第一个参数?谢谢
编辑:它不必是“初始”,只要我可以在ModelChoiceField上放置一些预先确定的值。条件=有一个request.POST,但表单尚未提交(帖子来自另一页)
答案 0 :(得分:1)
原来我只需要更改数据属性。使用copy方法使QueryDict可变
post = request.POST.copy()
f = SomeForm(post)
f.data['spam'] = 4
答案 1 :(得分:0)
如果表单已发布,则无需传递initial
。检查request.method
并相应地实例化表单。