• modelform 对象和model之间的关系


    一、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)

                    #根据自己的字段限制范围判断自己该不该出现在页面上。
  • 相关阅读:
    Java WebService入门实例
    Maven是什么
    for 循环
    2.4 DevOps工程师的故事:构建运行时的严谨性
    2.3.3 构建微服务的入口:Spring Boot控制器
    2.3.2 引导Spring Boot应用程序:编写引导类
    2.1.3 互相交流:定义服务接口
    第2章 使用Spring Boot构建微服务
    第1章 欢迎来到Cloud和Spring
    第一次在博客园开博
  • 原文地址:https://www.cnblogs.com/zjchao/p/8640402.html
Copyright © 2020-2023  润新知