-

django-treeform的Python项目详细描述


fromdjangoimportformsfromdjango_treeformimportTreeForm,SequenceNode,SequenceclassCharacteristicForm(TreeForm):id=forms.IntegerField()name=forms.CharField()rating=forms.CharField()classPersonForm(TreeForm):id=forms.IntegerField()name=forms.CharField()phone=forms.CharField()Charecteristics=SequenceNode(CharacteristicForm)params=[{"id":1,"name":"abc","phone":"12345","Charecteristics":[{"id":1,"name":"Good Looking","rating":"Average",},{"id":2,"name":"Smart","rating":"Excellent",}]},{"id":2,"name":"abc","phone":"12345","Charecteristics":[{"id":1,"name":"Good Looking","rating":"Average",},{"id":2,"name":"Smart","rating":"Excellent",}]}]form=Sequence(PersonForm)(params)print(form.is_valid())# => True

更多嵌套表单

fromdjangoimportformsfromdjango_treeformimportSequenceNode,TreeFormclassItemForm(forms.Form):name=forms.CharField()classNestedForm(TreeForm):classa(TreeForm):classb(TreeForm):classc(TreeForm):classd(TreeForm):classe(TreeForm):items=SequenceNode(ItemForm)params={"a":{"b":{"c":{"d":{"e":{"items":[{"name":"A"},{"name":"B"}]}}}}}}formlike=NestedForm(params)print(formlike.is_valid())# => Trueexpected={'a':{'b':{'c':{'d':{'e':{'items':[{'name':'A'},{'name':'B'}]}}}}}}assertformlike.cleaned_data==expectedassertformlike.errors=={'a':{'b':{'c':{'d':{'e':{'items':[{},{}]}}}}}}

自定义验证

classPointForm(forms.Form):x=forms.IntegerField()y=forms.IntegerField()classPointPairForm(TreeForm):left=Node(PointForm)right=Node(PointForm)defclean(self):ifself.has_error():returnifself.cleaned_data["left"]["x"]<self.cleaned_data["right"]["x"]:raiseforms.ValidationError("oops")params={"left":{"x":10,"y":20},"right":{"x":20,"y":"20"}}formlike=PointPairForm(params)print(formlike.is_valid()# => Falseprint(formlike.errors)# => {"left": {}, "right": {}, "__all__": ["oops"]}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是否可以将一半的文本绘制成不同的颜色?   java如何在Eclipse中生成Javadoc HTML文件?   带有时间戳的java“select”preparedStatement返回始终为空的记录集   java将无符号类型写入Netty ChannelBuffer   java动态资源名称   java lookupDefaultPrintService()不返回系统默认打印机   java如何在播放模板中翻译#{get'title'/}?   java为什么JSR352的ItemWriter接口中有一个checkpointInfo?有任何示例实现吗?   在方法外部声明的Java引用变量存在于堆栈或堆上   java类、异常、用户输入   java JApplet通过Eclipse而不是web浏览器连接到本地主机Mysql   java soap metro转储