一、modelform的每一个标签对象

for bound_field in form:            print('form.model',form.Meta.model)            # for 循环得到每一个标签对象

  

            #print('bound_field',type(bound_field))
# bound_field <class 'django.forms.boundfield.BoundField'>
# from django.forms.boundfield import BoundField
# 看一下内部封装的方法
# form.Meta.model 自身的表对对象
# self.form = form form对象
# self.field = field 字段对象
# 可以判断 一对多,一对一,多对多 isinstance( bound,field.field ModelChoiceField)
#       判断出满足条件后 可取到以下:
#       form.Meta.model._meta.get_field(bound_field.name).rel.related_name 反向查询名称related_name
#       self.name = name 字段名称
#      to_field_name 关联字段
#      limit_choices_to 关联表的取值范围 取不到为None
#        bound_field.field.queryset.model 关联的表对象
#       self.html_name = form.add_prefix(name)
#       self.html_initial_name = form.add_initial_prefix(name)
#      self.html_initial_id = form.add_initial_prefix(self.auto_id)

二、model增加的一个对象

obj = form.save()
for obj_related_field in obj._meta.related_objects:
              # 得到每一个关联此表的字段对象
  _related_name=str(obj_related_field.related_name) # 取到反向查询的字段名
                 obj_related_field.field_name 取代关联字段 默认是id
                model_name=obj_related_field.field.model   #取到关联表的类名
                _model_name=obj_related_field.field.model._meta.model_name #取到关联表的表名
              obj_related_field.limit_choices_to # 取到自己的字段限制范围
print(_model_name,_related_name)
res = {"state":False,"pk": None, "text": None, "pop_id":None}
if related_name==_related_name and _model_name==current_model_name:
                 # 找打此时验证的是哪张表的基础上添加的自己。
print("limit_choices_to:",obj_related_field.limit_choices_to)
ret=self.model.objects.filter(pk=obj.pk,**obj_related_field.limit_choices_to)                 #根据自己的字段限制范围判断自己该不该出现在页面上。

modelform 对象和model之间的关系的更多相关文章

  1. 李洪强iOS开发之OC[018]对象和方法之间的关系

    // //  main.m //  18 - 对象和方法之间的关系 // //  Created by vic fan on 16/7/14. //  Copyright © 2016年 李洪强. A ...

  2. 二.OC基础--1,对象的存储细节,2,#pragma mark指令,3,函数和对象方法的区别,4,对象和方法之间的关系 ,5.课堂习题

    1,对象的存储细节, 1. 当创建一个对象的时候:Person *p1 = [Person new],做了三件事情: 1,申请堆内存空间: 2,给实例变量初始化: 3,返回所申请空间的首地址; 2. ...

  3. ASP.NET-MVC中Entity和Model之间的关系

    Entity 与 Model之间的关系图 ViewModel类是MVC中与浏览器交互的,Entity是后台与数据库交互的,这两者可以在MVC中的model类中转换 MVC基础框架 来自为知笔记(Wiz ...

  4. JS高级---实例对象和构造函数之间的关系

    实例对象和构造函数之间的关系:   1. 实例对象是通过构造函数来创建的---创建的过程叫实例化   2. 如何判断对象是不是这个数据类型?    1) 通过构造器的方式 实例对象.构造器==构造函数 ...

  5. Javascript 构造函数、原型对象、实例之间的关系

    # Javascript 构造函数.原型对象.实例之间的关系 # 创建对象的方式 # 1.new object() 缺点:创建多个对象困难 var hero = new Object(); // 空对 ...

  6. JavaScript中的 原型 property 构造函数 和实例对象之间的关系

    1 为什么要使用原型? /* * javascript当中 原型 prototype 对象 * * */ //首先引入 prototype的意义,为什么要使用这个对象 //先来写一个构造函数的面向对象 ...

  7. 【整理】JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系

    #[整理]JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系 ![关系图解](http://images.cnitblog.com/blog/84 ...

  8. JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系

    郭晨 软件151 1531610114 [整理]JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系 visio文件下载 概述 一个JavaEE的项 ...

  9. java设计模式、框架、架构、平台之间的关系

        设计模式<框架<架构<平台,从复用角度讲,设计模式是代码级复用.框架是模块级复用.架构是系统级复用.平台是企业应用级复用. 1.设计模式 为什么要先说设计模式?因为设计模式在 ...

随机推荐

  1. javascript快速入门17--事件

    事件(上) JavaScript事件列表 事件 解说 一般事件 onclick 鼠标点击时触发此事件 ondblclick 鼠标双击时触发此事件 onmousedown 按下鼠标时触发此事件 onmo ...

  2. 使用Faric+Git进行分布式代码管理

    Fabric是一个Python库,可以通过SSH在多个host上批量执行任务. 可以通过编写任务脚本,然后通过Fabric在本地就可以使用SSH在大量远程服务器上自动运行. 这些功能非常适合应用的自动 ...

  3. Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法。

    http://fairwoodgame.com/blog/?p=38 Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法. Posted in  Uni ...

  4. Axure RP Extension for Chrome

    1.打开Chrome浏览器,找到“更多工具 -> 扩展程序”: 2.将下载的Axure-RP-Extension-for-Chrome-0.6.2.crx文件拖到界面当中: 3.安装成功后,勾选 ...

  5. 大巧不工web前端设计修炼之道—笔记

      设计原则: 深入人心的设计--别让我思考 简洁是一种文化,一种需求,一种思想   ·排版 ·字体(衬线 | | 无衬线)

  6. taro + iview 实现跨平台开发(App,Wap,微信小程序)

    1.安装 (1)安装脚手架 npm install -g @tarojs/cli taro init myApp (2)H5端运行 npm run dev:h5 taro build --type h ...

  7. mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决

      这次国庆节回来后的测试中,在一个Mysql表达式中使用嵌套查询,出现了这个错误.原因是内层select语句带有limit子句.   在网上查了下,有文章指出: 比如这样的语句是不能正确执行的. s ...

  8. IOS下拉放大图片

    代码地址如下:http://www.demodashi.com/demo/11623.html 一.实现效果图 现在越来越多的APP中存在下拉放大图片的效果,今天贡献一下我的实现这种方法的原理,和我遇 ...

  9. Linux下默认的目录介绍

    目录/文件 用途 来源 / /处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录.文件.设备都在/之下. - /bin 该目录存放着系统最常用的最重要的命令,相当于DOS ...

  10. node.js 学习02

    读写文件中的路径问题 readFile()读取文件函数中的./(相对路径)这个参数,相对的是执行node命令的路径,而不是相对于正在执行的这个js文件来查找.为了解决这个问题: __dirname(两 ...