码迷,mamicode.com
首页 > 其他好文 > 详细

Django之ModelForm组件

时间:2019-08-03 15:03:11      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:导入   添加   import   ror   关键字   不同的   多个   exclude   control   

modelform介绍

modelform与forms组件类似,forms组件与对应的表模型(没有关系)

modelform相当于在其基础上继续封装,使得modelform与model具有对应的关系

创建modelform

from app01 import models
# 导入modelform这个类
from django.forms import ModelForm
# 自己创建一个类继承这个类
class BookList(ModelForm):
    # 创建Meta类,在Meta类中可以定义属性
    class Meta:
        # 对应的表模型
        model = models.Book
        # fields 用于控制展示的字段 __all__代表全部, 如果想展示多个,就放在列表中
        fields = __all__
        # fields = [‘title‘, ‘price‘]
        # exclude用于控制排除的字段
        exclude = [title]
        # error_message用于展示报错信息时不同字段对应不同的信息
        error_messages = {
            title: {
                required: 标题不能为空,
                invalid: 格式错误
            },
            # ‘price‘.... 每个字段需要添加错误信息都可以在这个地方添加
        }
        # 当我们想要给对应的输入框加入属性时,widgets可以帮我们实现
        # 首先要从forms中导入widgets,这里因为和下面的关键字名字一样, 所以需要起别名
        from django.forms import widgets as wid
        widgets = {
            title: wid.TextInput(attrs={class:form-control}),
            price: wid.TextInput(attrs={class:form-control})
        }
        # labels 自定义在前端显示的名字,如果我们不指定,就会自动取字段中查找设置的verbose_name的值
        # 如果我们没有设置verbose_name,就会使用字段名对应的小写
        labels = {
            title: 标题,
            price: 价格
        }

 在url对应的视图函数中实例化这个类传到前端

def index(request):
    book_obj = BookList()
    return render(request, xxx.html, locals())

在前端中用法基本与forms组件一致

<label for="{{ foo.auto_id }}">    获得输入框对应的id值
{{ foo.label }}                     获得输入框对应的文本名
</label>                            对应的输入框
{{ foo }}
<span>
{{ foo.errors.0 }}                  输入框的报错信息

 

Django之ModelForm组件

标签:导入   添加   import   ror   关键字   不同的   多个   exclude   control   

原文地址:https://www.cnblogs.com/hesujian/p/11294670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!