1

I have a complex dynamic form , where fields are being generated based on previous fields multiple times (for example I have a select field with football/basketball, when I choose football, all countries select is being generated, when choose country, leagues are generated等等..)

我不会在这里粘贴代码,因为它太大了。但简单的结构是

 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. 但是例如匹配/(其他)动态字段与值一起存在。所以我很困惑为什么最后一个有价值而其他人没有。

匹配和其他动态字段可能存在,因为它们基本上是最后渲染的动态字段。但我还是不明白。虽然request.POST有所有数据。

是另一个stackoverflow问题。有人建议字段映射不正确。但我认为这不是我的形式的重点。

无论如何,如果您可能需要更多代码部分,我会尝试显示/解释更多。


更新 1

我发现如果只看form.cleaned_data里面的内容,那么字段联盟一个国家都不存在,如果写form.cleanded_data ['league']然后它打印一个联盟,但它打印的不是选择选项值,而是文本之间标签 一些文字....

这是 request.POST ,清理后的数据返回的内容....一些测试....:

请求.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'],那么它的值是'Blue square League' 来自 Blue square League,但值 45 应该在那里......

这非常令人困惑,也许现在有人知道这些动态字段会发生什么......

4

0 回答 0