Django之ModelForm组件

Posted hesujian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django之ModelForm组件相关的知识,希望对你有一定的参考价值。

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组件的主要内容,如果未能解决你的问题,请参考以下文章

Django之modelform组件

Django之ModelForm组件

Django之ModelForm组件

Django之ModelForm组件

Django之ModelForm组件

Django之ModelForm组件