描述如下:

如果有两个以上的select form,而这些select的options是相互关联的,为简化问题,我们假设有两个select, sa和sb。sb的options依赖于sa的选择,这个可以通过ajax来实现,没有问题。

问题是,这时,在django的form中,生成sb的choicefield中并没有这些options,这样在sb的clean()的时候,导致错误,进而导致整个form不能通过validate。

一句话以概之,就是动态form的问题。

有人遇到过类似问题吗?如何解决的?

btw,django不把ajax整合进来真是顽固不化,一点不考虑使用者的意见。
评论
guotie 2007-12-09
做了一个丑陋的tick,解决了这个问题:
当request请求为post时,先从post参数中取出sa的值,并根据sa的值查找sb的options,赋给了sb.choices,让sb的validate通过。


其实,newforms的field应该提供让用户来选择,是否需要validate。
zbird 2007-12-09
再废话一下。
Django源于现实中的项目,因此很多特性都是根据该项目来的。
因此如果你的项目和他的项目不是一道的,就很可能有不少不顺的地方。
zbird 2007-12-09
验证这东西有时候确实有些讨厌。
对于select,他非要给你验证当前选中的值是否是select里的。
所以没办法,不管UI是否需django生成select都需要将用到的值放到select里。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

guotie
搜索本博客
博客分类
存档
最新评论