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对象,想要什么样式另外加


原文地址:https://www.cnblogs.com/dingyunfeng/p/10506096.html