1

以前のフィールドに基づいてフィールドが複数回生成されている複雑な動的フォームがあります (たとえば、サッカー/バスケットボールの選択フィールドがあり、サッカーを選択するとすべての国が選択され、国を選択するとリーグが生成されます)等々..)

コードが大きすぎるため、ここには貼り付けません。でもシンプルな構造は

 def __init__(self, data=None, *args, **kwargs):
       super(tipForm, self).__init__(data, *args, **kwargs)
       Based on some logic adding dynamic fields here.....

これはフィールド間の基本的な関係です:Country->league->match->other(dateAndTime field, home/away team fields)

私の問題は、フォームが送信され、すべての検証に合格すると、cleaned_data動的フィールドを含むフィールドのすべてのキーがあるのに、何らかの理由で国とリーグの値がempty/None/Null. ただし、たとえば、match/(other) 動的フィールドには値が存在します。だから、なぜ最後のものには値があり、他のものには値がないのか混乱しています。

基本的に最後にレンダリングされた動的フィールドであるため、一致およびその他の動的フィールドが存在する可能性があります。しかし、まだわかりません。すべてrequest.POSTのデータがありますが。

これが別のスタックオーバーフローの質問です。フィールドが正しくマップされていないことを誰かが示唆している場合。しかし、それが私のフォームのポイントではないと思います。

とにかく、もう少しコード部分が必要な場合は、もっと見せたり説明したりしようと思います.


更新 1

form.cleaned_data['league'] を書き込むと、League が出力されますが、 select option value ではなく、の間にテキストが出力されます。タグ いくつかのテキスト ....

これが request.POST 、クリーニングされたデータが返すものです .... いくつかのテスト .... :

request.POST:

<querydict: {u'initial-league':="" [u'45'],="" u'league':="" u'bettype':="" [u'hda'],="" u'bookie':="" [u'10bet'],="" u'handicap':="" [u'1.25'],="" u'country':="" [u'40'],="" u'odds':="" [u'1.11'],="" u'stake':="" [u'1'],="" u'prediction':="" [u'home'],="" u'initial-country':="" u'totalgoals':="" [u'+0.00'],="" u'initial-match':="" [u'12'],="" u'sport':="" u'initial-sport':="" u'match':="" [u'12']}=""></querydict:>

form.cleaned_data:

{'league': , 'bettype': u'hda', 'bookie': u'10bet', 'handicap': 1.25, 'country': , 'odds': 1.1100000000000001, 'stake': u'1', 'prediction': u'Home', 'sport': u'1', 'totalGoals': u'+0.00', 'match': u'12'}

form.cleaned_data['リーグ']:

ブルー スクエア プレミア

request.POST['リーグ']:

45

データはそこにあるように感じますが、さまざまな形式であり、 form.cleaned_Data のように一般的に印刷すると、リーグが空であることを示しますが、 form.cleaned_data['league'] を印刷すると、値が「青」になります青い正方形リーグに由来する「正方形リーグ」ですが、値45がそこにあるはずです...

それは非常に紛らわしいです。おそらく、誰かがこれらの動的フィールドでここで何が起こるかを知っているかもしれません...

4

0 に答える 0