关键词:
ModelForm 是 Django 中编写基于 Model 定制表单的方法,可以提高 Model 复用性。
使用时 Django 会根据 django.db.models.Field
(用于数据库衔接) 自动转化为 django.forms.Field
(用于表单前端展示、后端验证)。
编辑数据:
如果不用ModelForm,编辑的时候得显示之前的数据吧,还得挨个取一遍值,如果ModelForm,只需要加一个instance=obj(obj是要修改的数据库的一条数据的对象)就可以得到同样的效果。
保存的时候要注意,一定要注意有这个对象(instance=obj),否则不知道更新哪一个数据。
代码示例:
from django.shortcuts import render,HttpResponse,redirect from django.forms import ModelForm # Create your views here. from app01 import models def test(request): # model_form = models.Student model_form = models.Student.objects.all() return render(request,‘test.html‘,‘model_form‘:model_form) class StudentList(ModelForm): class Meta: model = models.Student #对应的Model中的类 fields = "__all__" #字段,如果是__all__,就是表示列出所有的字段 exclude = None #排除的字段 labels = None #提示信息 help_texts = None #帮助提示信息 widgets = None #自定义插件 error_messages = None #自定义错误信息 #error_messages用法: error_messages = ‘name‘:‘required‘:"用户名不能为空",, ‘age‘:‘required‘:"年龄不能为空",, #widgets用法,比如把输入用户名的input框给为Textarea #首先得导入模块 from django.forms import widgets as wid #因为重名,所以起个别名 widgets = "name":wid.Textarea #labels,自定义在前端显示的名字 labels= "name":"用户名" def student(request): if request.method == ‘GET‘: student_list = StudentList() return render(request,‘student.html‘,‘student_list‘:student_list) else: student_list = StudentList(request.POST) if student_list.is_valid(): student_list.save() return render(request,‘student.html‘,‘student_list‘:student_list) def student_edit(request,pk): obj = models.Student.objects.filter(pk=pk).first() if not obj: return redirect(‘test‘) if request.method == "GET": student_list = StudentList(instance=obj) return render(request,‘student_edit.html‘,‘student_list‘:student_list) else: student_list = StudentList(request.POST,instance=obj) if student_list.is_valid(): student_list.save() return render(request,‘student_edit.html‘,‘student_list‘:student_list) 使用ModelForm编辑数据
对于验证规则,很多浏览器都比较智能,会自动帮我们做一些验证,可以在form表单上加 novalidate 属性就可以不让浏览器为我们做验证
ModelForm还支持所有form的功能,比如钩子,所以我们就可以通过钩子来自定义验证规则
写法和forms的写法一样:
class AuthorForm(forms.ModelForm): class Meta: model = Author fields = (‘name‘, ‘title‘) def clean_name(self): if ... return self.clean_data[‘name‘] else: raise ValidationError(‘sdgsadga’) ...
https://www.cnblogs.com/DI-DIAO/p/8978780.html
django之modelform组件(代码片段)
ModelForm组件是django中一个非常强大的组件,其功能主要有一校验字段 ModelForm组件的主要格式为:继承组件fromdjangoimportformsclassUserModelForm(forms.ModelForm):指定表model=models.UserInfo指定要显示的字段fields=‘__all__‘#显示所有,常... 查看详情
django之modelform(代码片段)
要说ModelForm,那就先说Form吧!先给出一个Form示例:models.pyfromdjango.dbimportmodelsclassUserType(models.Model):caption=models.CharField(max_length=32)classUserGroup(models.Model):name=models.CharField(max_length=32) 查看详情
django之modelform(代码片段)
简介Model+Form==>ModelForm。model和form的结合体,所以有以下功能:验证数据库操作Form回顾models.pyclassUserType(models.Model):caption=models.CharField(max_length=32)classUserInfo(models.Model):username=models.CharField(max_le 查看详情
django之modalform(代码片段)
ModelForm自己定义的form--->Form--->BaseForm自己定义的ModelForm--->ModelForm--->BaseModelForm--->BaseForm从上面可以看出form和ModelForm都是继承BaseForm,所以在Form中有的方法在ModelForm中也是有的,包括is_vali 查看详情
django框架之modelform组件(代码片段)
浏览目录创建mldelform添加记录编辑记录 Django框架中的modelform组件通过名字我们可以看出来,这个组件的功能就是把model和form组合起来。下面我们来看一个例子:比如我们的数据库中有这样一张学生表,字段有姓名,年龄,爱... 查看详情
django框架之modelform组件(代码片段)
浏览目录创建mldelform添加记录编辑记录 Django框架中的modelform组件通过名字我们可以看出来,这个组件的功能就是把model和form组合起来。下面我们来看一个例子:比如我们的数据库中有这样一张学生表,字段有姓名,年龄,爱... 查看详情
django之modelform使用(代码片段)
一:什么是ModelForm呢?Model+Form==>ModelForm。model和form的结合体,所以有以下功能:数据验证数据库操作model有操作数据库的字段,form验证也有那几个字段,虽然耦合度降低,但是代码是有重复的。如果利用model里的字段,那是不... 查看详情
django之modelform组件(代码片段)
1ModelForm2a.classMeta:3model,#对应Model的4fields=None,#字段5exclude=None,#排除字段6labels=None,#提示信息7help_texts=None,#帮助提示信息8widgets=None,#自定义插件9error_messages=None,#自定义错误信息(整体错误信息fromdjango.core.exceptionsimportNON_FIELD_ERRO... 查看详情
django之modelform组件(代码片段)
1ModelForm2a.classMeta:3model,#对应Model的4fields=None,#字段5exclude=None,#排除字段6labels=None,#提示信息7help_texts=None,#帮助提示信息8widgets=None,#自定义插件9error_messages=None,#自定义错误信息(整体错误信息fromdjango.core.exceptionsimportNON_FIELD_ERRORS)1... 查看详情
django之modelform
顾名思义,Model+Form==ModelForm。model和form的合体,所以有以下功能:验证数据字段(Form的功能)数据库操作(Model的功能)model有操作数据库的字段,form验证也有那几个字段,虽然耦合度降低,但是代码是有重复的。如果利用... 查看详情
django组件-modelform(代码片段)
ModelForm组件功能就是把model和form组合起来.首先导入ModelFormfromdjango.formsimportModelForm在视图函数中,定义一个类,比如就叫StudentList,这个类要继承ModelForm,在这个类中再写一个原类Meta(规定写法,并注意首字母是大写的)在这个原类中,有... 查看详情
django之modelform组件
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950ModelForm a. class Meta: &nbs 查看详情
django之modelform组件
Django之ModelForm组件 ModelForma.classMeta:model,#对应Model的fields=None,#字段exclude=None,#排除字段labels=None,#提示信息help_texts=None,#帮助提示信息widgets=None,#自定义插件error_messages=None,#自定义错误信息(整体错误信息fromdjango.co 查看详情
[django]django的modelform处理数据(代码片段)
django的form处理数据1.生成html2.验证数据合法性3.直接存库定义1个formclassBlogPost(models.Model):title=models.CharField(max_length=150)body=models.TextField()timestamp=models.DateTimeField()以前是这样的classBlogPostForm(forms.For 查看详情
django之httpresponse和jsonresponse详解(代码片段)
HttpResponse对象Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响应给浏览器。而这个响应,我们必须返回HttpRes... 查看详情
django之form表单(代码片段)
...的字段与验证器5:自定义验证器6: 提取错误信息7:ModelForm: (1)自定义错误消息 (2)save()方法 1什么是表单:表单是用来收集用户信息的表的集合,比如用户在网站上登入(输入自己的用户名,密码提交到网... 查看详情
django中的modelform和modelfoemset(代码片段)
一.ModelForm ModelForm是根据Model来定制的Form二.ModelForm的创建fromdjangoimportformsfromappimportmodelsclassMyModelForm(forms.ModelForm):classMeta:model=models.Bookfields="__all__" labels= "title":"书名", "price":"价格" ... 查看详情
django使用modelform一步保存数据(代码片段)
...django官方文档https://docs.djangoproject.com/zh-hans/2.0/topics/forms/modelforms/首先,创建的form类,会有个meta类,meta类里的要定义一个model,即是form表单连接的model,然后fields里是你所需要的model的字段,就像这样1classMeta:2model=Model_Supply3fields 查看详情