1

だから私はこのコードを持っています:

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 が設定されていないと不平を言います。これはなぜでしょうか?

編集: コードの最初のブロックは正常に動作し、非常に満足しています。質問はコードの 2 番目のブロックに関するもので、最初は私が持っていたもの (そして私が作業に時間を費やしたもの) であり、私にとっては「奇妙な」動作をしています。

4

1 に答える 1

2

最初のスニペットはrelationshipId、Web 要求で指定された POST パラメーターから取得するのではなく、フィールドを動的に設定します。

2 番目のスニペットはその値を から直接取得するrequest.POSTため、フォームが無効な値を送信した場合、または値が指定されていない場合は検証されません。

引数はinitialバインドされていないフォームにのみ適用されます ( https://docs.djangoproject.com/en/1.5/ref/forms/fields/#initialを参照)。postフォームをまたはにバインドしているため、ここでは省略できますrequest.POST

于 2014-06-15T18:14:58.203 に答える