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框

  • 相关阅读:
    PCB电路板元器件布局的一般原则*(转)
    PCB Layout初学者必会知识总结(转)
    数字器件和模拟器件?
    同一原理图中怎么区分数字电路和模拟电路
    oracle 11g R2执行INSERT语句,数据库把一个汉字看做3个汉字
    SQL存储过程与函数的区别
    用户自定义函数——Oracle 11g R2
    提高使用SQL Developer进行PL/SQL编程的效率——Oracle 11g R2
    Oracle查看用户使用的表
    JAVA-Eclipse快捷键
  • 原文地址:https://www.cnblogs.com/q767498226/p/10704706.html
Copyright © 2011-2022 走看看