一、modelform的每一个标签对象

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

  

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

二、model增加的一个对象

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

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. Technique Standard

    http://blog.csdn.net/cnjet/article/details/73433903 jinyaping

  2. profiler

    推荐C++ 的profiler 用于GPU CPU 综合测试 FramePro http://www.puredevsoftware.com/ 可以在进度条上拉时间 查看GPU CPU bound

  3. vim删除文本文件中末行^M

    ^M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r\n,而在*nix系统里则为\n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个^M.所以^M只是一 ...

  4. 开源框架Quartz动态加入、改动和删除定时任务 (二)

    貌似每次回过头去看之前写的一些东西,总感觉不是非常完美~~虽说不做完美人.但也要做完美事!这次主要是针对Quartz的动态维护和Spring集成.简单粗暴一点,直接上代码,有什么不了解留言交流 先来一 ...

  5. MoveSessionRestore.bat for firefox

    move "c:\Documents and Settings\leon\Application Data\Mozilla\Firefox\Profiles\eyr6cp34.default ...

  6. POJ3525-Most Distant Point from the Sea(二分+半平面交)

    Most Distant Point from the Sea Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3955   ...

  7. 使用python-nmap 搭建基本端口扫描器

    代码地址如下:http://www.demodashi.com/demo/13255.html 一.前言 注意: 本文相关教程仅供个人学习使用,切勿用于非法用途,否则造成的相关损失及影响,作者不承担任 ...

  8. android js 互相调用

    代码地址如下:http://www.demodashi.com/demo/13107.html android js 互相调用 第二版 支持js匿名函数接收 支持js json对象接收 支持js函数返 ...

  9. C#绑定事件时使用匿名函数

    当使用一些临时的函数 可以预知这些函数基本不会被复用时  可以使用匿名函数简化代码 public static void startCoupons() { //绑定一些事件 userGetCoupon ...

  10. 数据库面试题.net

    1.ADO.net中常用的对象 connection, command, sqladapter, dataset, dataview. 2.net中读写数据库要用到哪些类 DataSet数据存储 Da ...