最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Django中ModelForm组件的介绍(代码示例)

来源:动视网 责编:小采 时间:2020-11-27 14:20:27
文档

Django中ModelForm组件的介绍(代码示例)

Django中ModelForm组件的介绍(代码示例):本篇文章给大家带来的内容是关于Django中ModelForm组件的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单。 举个例子,你也许会有个Book 模
推荐度:
导读Django中ModelForm组件的介绍(代码示例):本篇文章给大家带来的内容是关于Django中ModelForm组件的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单。 举个例子,你也许会有个Book 模


本篇文章给大家带来的内容是关于Django中ModelForm组件的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单。 举个例子,你也许会有个Book 模型,并且你还想创建一个form表单用来添加和编辑书籍信息到这个模型中。 在这种情况下,在form表单中定义字段将是冗余的,因为我们已经在模型中定义了那些字段。

基于这个原因,Django 提供一个辅助类来让我们可以从Django 的模型创建Form,这就是ModelForm。

modelForm定义

form与model的结合。

from django import forms
from crm import models

class RegForm(forms.ModelForm):
 password = forms.CharField(
 widget=forms.PasswordInput,
 label='密码',
 min_length=6,
 max_length=12
 )
 re_password = forms.CharField(
 widget=forms.PasswordInput,
 label='确认密码',
 min_length=6,
 max_length=12
 )
 mobile = forms.CharField(

 )
 class Meta:
 model = models.UserProfile # 指定model
 fields = '__all__' # 全部字段
 # fields = ['username','password'] # 指定字段
 exclude = ['is_active'] # 除某个字段之外的其余字段
 labels = {
 'username':'用户名'
 }
 error_messages = {
 'min_length': '太短了',
 }
 widgets = {
 'username': forms.TextInput(attrs={'placeholder': '用户名@xx.com'}),
 }

class Meta下常用参数:

model = models.Book # 对应的Model中的类
fields = "__all__" # 字段,如果是__all__,就是表示列出所有的字段
exclude = None # 排除的字段
labels = None # 提示信息
help_texts = None # 帮助提示信息
widgets = None # 自定义插件
error_messages = None # 自定义错误信息

ModelForm的验证

与普通的Form表单验证类型类似,ModelForm表单的验证在调用is_valid() 或访问errors 属性时隐式调用。

我们可以像使用Form类一样自定义局部钩子方法和全局钩子方法来实现自定义的校验规则。

如果我们不重写具体字段并设置validators属性的化,ModelForm是按照模型中字段的validators来校验的。

save()方法

每个ModelForm还具有一个save()方法。 这个方法根据表单绑定的数据创建并保存数据库对象。 ModelForm的子类可以接受现有的模型实例作为关键字参数instance;如果提供此功能,则save()将更新该实例。 如果没有提供,save() 将创建模型的一个新实例:

>>> from myapp.models import Book
>>> from myapp.forms import BookForm

# 根据POST数据创建一个新的form对象
>>> form_obj = BookForm(request.POST)

# 创建书籍对象
>>> new_ book = form_obj.save()

# 基于一个书籍对象创建form对象
>>> edit_obj = Book.objects.get(id=1)
# 使用POST提交的数据更新书籍对象
>>> form_obj = BookForm(request.POST, instance=edit_obj)
>>> form_obj.save()

文档

Django中ModelForm组件的介绍(代码示例)

Django中ModelForm组件的介绍(代码示例):本篇文章给大家带来的内容是关于Django中ModelForm组件的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单。 举个例子,你也许会有个Book 模
推荐度:
标签: 介绍 代码 简介
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top