ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【django入门】 15 ModelForm关联MySQL“多”字段表(增-页面)

2022-02-20 13:32:39  阅读:254  来源: 互联网

标签:15 form py django field html 段表 MySQL ModelForm


简介

Form、ModelForm都是django下forms下的类

  • django.forms.Form
  • django.forms.ModelForm

Form能做到:

  • 校验用户POST的数据是否满足数据库设计要求
  • 不满足要求时,生成错误提示
  • 于views.py定义form中多个字段,“自动”被html页面继承

ModelForm 还能做到:

  • 基于models.py各字段(包含外键、包含元祖时),“自动”于views.py取到models的多个字段
    例如gender_list限定男和女
    depart_obj限定特定几个部门

ModelForm编写新增页面

views.py中

  1. 定义用户的ModelForm类
  • ①“class Meta:”
  • ②该用户类继承django.forms.ModelForm(可先引入django.forms)
  • ③用户类中“model = 具体数据库表”
  • ④用户类中“fields = 具体数据库表的具体字段” 或 = “all
  1. 将用户类作为变量(“form”)传入request函数,最终传入html

html中

  • 循环传入变量(“form”),取名“field”
  • field.label 源自 models.py中该字段的verbose_name
  • field在每次循环中,等同于具体的form.name、form.age、form.password……

  • field有特定值时,例如“男”、“女”,html最终呈现为下拉框选项

  • field有特定外键值时,例如“吹牛部”、“趟平部”,但html默认呈现为object

此时需要在models.py,对具体表做特别定义,使该表(作为对象)返回的值默认为具体某个字段


  • 由于html中,{{ field }}不能额外定义css样式
    那么如何实现应用Bootstrap的class?——在views.py中的用户类中做定义
  1. 逐个定义Bootstrap的样式


  1. 批量定义Bootstrap的样式

↑ 阅读django源码,才可发现这个方法:
用户类的super(),即django的ModelForm——的fiels.items()
包含name和field,其中可以在field.widget.attrs定义class


来源:BV1NL41157 武沛齐《2022 B站最详细django3教程(django从入门到实践)》P32-P33

标签:15,form,py,django,field,html,段表,MySQL,ModelForm
来源: https://www.cnblogs.com/navii/p/15906376.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有