2012-09-25 38 views
1

,所以我有这样的代码:DJANGO - 使用request.POST更改表单值?

post = request.POST.copy() 
post['relationshipId'] = theRelationship.id 
theStory = StoryForm(post, request = request, initial {'relationshipId' : theRelationship.id}) 

最初,我的代码是这样的:

theStory = StoryForm(request.POST, request = request, initial {'relationshipId' : theRelationship.id}) 

引起验证问题。验证器会抱怨没有设置relationshipId。为什么会这样?

编辑:第一个代码块正常工作,我超级高兴。这个问题与第二块代码有关,它最初是我所拥有的(以及我刚才花了一些时间处理的),对我而言,代理“奇怪”

+0

'theRelationship.id'从哪里来? – Joseph

+0

相同的形式。嗯,发生什么事是两个对象的形式。关系是一个已经构建和保存的django表单。然后我粘贴上面的代码运行。 – bharal

回答

2

第一个代码段设置relationshipId字段动态地,而不是从Web请求中提供的POST参数中获取它。

第二个代码段将直接从request.POST获取该值,因此如果表单提交的值无效,或者没有给出值,则不会生效。

initial说法只适用于未绑定的形式(见https://docs.djangoproject.com/en/1.5/ref/forms/fields/#initial)。您可以将它保留在此处,因为您将表单绑定到postrequest.POST