type创建类的方法
我们在遇到form组件渲染标签时,其name属性是默认的,我们无法自定义name属性,由此引出用type来创建form组件的类
# TempForm就相当于类名,也是第一个参数 # 第二个参数时继承form组件的Form类 # 第三个参数字典就写入相应的字段,和定义form组件的时候写法一样 # 字典中的key就是字段名也就是被渲染的name属性值,这里是字符串的形式,所以我们就可以自定义name属性值了 TempForm=type("TempForm",(forms.Form,),{ "score_%s"%study_record.pk:forms.ChoiceField(choices=StudyRecord.score_choices), "homework_note_%s"%study_record.pk:forms.CharField(widget=widgets.Textarea(attrs={ "rows":3})) }) # 实例化对象,类名() # initial参数:就是给每一个渲染出的标签添加默认值 # 以字典的形式,key就是name属性值,对应的value就是标签的value属性值,这样前端标签就可以显示出数据库中对应的值了 obj=TempForm(initial={ "score_%s"%study_record.pk:study_record.score, "homework_note_%s"%study_record.pk:study_record.homework_note, })