zoukankan      html  css  js  c++  java
  • django中的modelform和modelfoemset

    一. ModelForm

      ModelForm是根据Model来定制的Form

    二. ModelForm的创建

    from django import forms
    from app import models
    
    class MyModelForm(forms.ModelForm):
        class Meta:
            model = models.Book
            fields = "__all__"
         labels = {
            "title":"书名",
            "price":"价格"
          }
          widgets{
            "password":forms.widgets.PasswordInput(attt={"class":"form-control"}),
          }

    三. class Meta中常用的参数

      model = models.Book    对应models中的类

      fields = "__all__"       列出所有的字段

      exclude = None         排除的字段

      labels = None        提示信息

      widgets = None       自定义插件

      error_messages = None     自定义错误信息

    四. ModelForm的使用

      1. 创建modelform对象

        form_obj = MyModelForm()          

        form_obj = MyModelForm(instance=obj)    如果需要对form进行有关操作就传进去一个实例对象

      2.  编辑操作

        form_obj = MyModelForm(request.POST,instance=obj)

        form_obj.save()             这样,就会对实例对象进行操作

    五. 对ModelForm显示的字段做出限制

      1. 获取字段和字段对象

        self.fields      获取有序字典,(字段,字段对象)

      2. 对字段显示做出限制

        self.fields["key"].choices      获取可供选择的迭代器列表,重新定义这个值,就可以对字段的显示做出限制

        self.fields["key"].choices=[()]    这个值是列表中放着元组的数据

      3. self.instance的操作

        在实例化modelform对象的时候,instance=obj这个参数传的,这个obj是个类对象

        在modelform中的Meta中,可以使用self.instance对字段的显示进行限制

    六. modelformset的使用

      1. 导入modelformset_factory模块
        rom django.forms import modelformset_factory

      2. 创建一个FormSet类
        FormSet = modelformset_factory(models,form,extra=0) # 第一个参数是表的models,第二个参数是表的forms,extra是额外多几行

      3. 实例化这个类
        formset = FormSet(queryset=需要处理的queryset数据)

      4. html渲染的时候
        1. 给每个form都加上{{ formset.id }}
        2. 在form表单中加{{ formsets.management_form }}
        3. 展示字段
          formset.字段 是带有input框的select
          formset.instance.字段 拿到的是数据源,没有select框

  • 相关阅读:
    Yii2 高级模板不使用Apache配置目录,将前后台入口移到根目录
    物理路径,相对路径,绝对路径以及根目录
    其他ip无法访问Yii的gii,配置ip就可以
    move_uploaded_file() 函数
    DetailView内匿名函数不可用
    instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例 , 返回true或者false
    php 判断变量函数
    [HNOI2008] GT考试
    [Bzoj1006][HNOI2008]神奇的国度
    [BZOJ 1005] 明明的烦恼
  • 原文地址:https://www.cnblogs.com/q767498226/p/10704706.html
Copyright © 2011-2022 走看看