Django 1.8中如何优雅定义支持超长文本输入的表单字段?
解决Django 1.8中表单超长文本字段的优雅定义方法
嘿,我懂你的困扰——设置一个夸张到离谱的max_length值确实显得很不专业,其实有更简洁优雅的方式来实现你要的功能!
在Django的表单系统里,确实没有forms.TextField(这个是模型层专属的字段类型),但我们完全可以通过优化forms.CharField的用法来实现任意长度文本输入:
正确的字段定义方式
直接去掉max_length参数就好!代码如下:
selected_services = forms.CharField(label="Selected_services *", widget=forms.Textarea())
为什么这样可行?
forms.CharField本身不强制要求设置max_length,当你不指定这个参数时,Django不会在后端对输入文本的长度做任何限制,完美支持任意长度的输入。- 配合
forms.Textareawidget,前端会渲染出多行文本输入框,用户体验和你之前的写法完全一致,但代码简洁优雅得多。
额外小提示(如果用ModelForm的话)
如果你的表单是和Model绑定的ModelForm,而对应的模型字段是models.TextField,那你甚至不需要手动定义这个表单字段——ModelForm会自动帮你生成CharField+Textarea的组合,完全适配超长文本输入,连代码都省了!
内容的提问来源于stack exchange,提问作者Xar
相关产品推荐
相关产品推荐

