Django提交HTML表单到MySQL时gender等字段存为'on'如何解决
问题原因
HTML的radio类型输入框如果未显式指定value属性,浏览器默认会将选中项的提交值设为on,你的表单中所有gender、rscale对应的单选框都没有设置value属性,所以后端Django接收到的参数值就是on,存入数据库自然也是这个值。
解决方法
修改你的HTML表单代码,给每个单选框加上对应的value属性即可:
- 性别部分修改为:
Gender:<br> <input type="radio" name="gender" value="Male" required="required"> Male <input type="radio" name="gender" value="Female" required="required"> Female <input type="radio" name="gender" value="Other" required="required"> Other
- 网站评分部分修改为:
On a scale of 1~10, how do you rate this website?<br> <input type="radio" name="rscale" value="1" required="required"> 1 <input type="radio" name="rscale" value="2" required="required"> 2 <input type="radio" name="rscale" value="3" required="required"> 3 <input type="radio" name="rscale" value="4" required="required"> 4 <input type="radio" name="rscale" value="5" required="required"> 5 <input type="radio" name="rscale" value="6" required="required"> 6 <input type="radio" name="rscale" value="7" required="required"> 7 <input type="radio" name="rscale" value="8" required="required"> 8 <input type="radio" name="rscale" value="9" required="required"> 9 <input type="radio" name="rscale" value="10" required="required"> 10
修改完成后重新提交表单,数据库中存储的就是你选择的实际值了。
可选优化:你的website_rating字段存储的是1-10的数字,可将models中的字段类型从CharField改为IntegerField,更符合数据存储逻辑。
内容的提问来源于stack exchange,提问作者infinityscrub
相关产品推荐
相关产品推荐

