Django动态字段和cleaning_data

时间:2012-12-30 18:44:52

标签: django forms dynamic

我有一个复杂的动态表单,其中字段是根据以前的字段多次生成的(例如我有一个带足球/篮球的选择字段,当我选择足球时,所有国家/地区选择正在生成,选择国家时,联盟产生等等。)

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

 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包含所有数据。

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

无论如何,如果你需要更多的代码部分,我会尝试展示/解释更多。


更新1

我发现如果只是看看form.cleaned_data里面的东西,那么现场联盟一个国家都没有,如果写form.cleanded_data ['league']那么它会打印一个联盟,但它打印的不是选择选项值,但标签之间的文字有些文字......

这是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 [ '联盟']:

Blue Square Premier

request.POST [ '联盟']:

45

感觉数据就在那里,但是用不同的格式,如果你像form.cleaned_Data一般打印它,它表明联盟是空的,虽然如果你打印form.cleaned_data ['league'],那么它有价值'蓝方联盟'来自蓝方联盟,但价值45应该在那里......

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

0 个答案:

没有答案