form组件

 

 

 

 

 

 

 

def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['hobby'].choices =models.Hobby.objects.all().values_list('id', 'name')
choice从数据库取值,重写init

 

 

 

 

 

还有钩子函数校验  没加

 

 

 

 

 

 


 

举例:

 

模型类:

  

对应form:

  form的字段必须与前端标签的name值保持一致才能用form_obj=UserForm(request.POST)传值, 也要和模型类中表的字段一致才能插入数据库.
  所以form的字段==前端标签的name值==models表中的字段

 

 前台:

后端:

前端渲染form表单的三种方式:

第一种 {{ form_obj.as_p }}

 

    渲染成3个p标签,每个p表面里面包一个label一个input
    form_obj.as_p 通常不用,因为不够灵活

 

第二种  form_obj.字段名, 渲染单个标签

 

第三种常用, 循环form对象,想要什么样式另外加


 

posted @ 2019-03-10 17:36  yunfengding  阅读(141)  评论(0编辑  收藏  举报