CRM项目实战-动态model form 增加自定义样式

类在实例化之前会执行__new__方法

cls.base_fields ——》form字段   admin_class.model._meta.fields——》model字段

from django.forms import ModelForm

def create_dynamic_model_form(admin_class,form_add=False):
    """动态的生成modelform
    form_add: False 默认是修改的表单,True时为添加
    """

    class Meta:
        model = admin_class.model
        # fields = [‘name‘,‘consultant‘,‘status‘]
        fields = "__all__"
        if not form_add:#change
            exclude = admin_class.readonly_fields
            admin_class.form_add = False #这是因为自始至终admin_class实例都是同一个,
            # 这里修改属性为True是为了避免上一次添加调用将其改为了True
        else: #add
            admin_class.form_add = True

    def __new__(cls, *args, **kwargs):
        print("__new__",cls,args,kwargs)
        for field_name in cls.base_fields:  #admin_class.model._meta.fields?
            print(‘123‘,cls.base_fields)
            print(‘456‘,admin_class.model._meta.fields)
            filed_obj = cls.base_fields[field_name]
            filed_obj.widget.attrs.update({‘class‘:‘form-control‘})
            # if field_name in admin_class.readonly_fields:
            #     filed_obj.widget.attrs.update({‘disabled‘: ‘true‘})
            #     print("--new meta:",cls.Meta)

        #print(cls.Meta.exclude)
        return  ModelForm.__new__(cls)

    dynamic_form = type("DynamicModelForm" ,(ModelForm,) ,{‘Meta‘ :Meta,‘__new__‘:__new__})

    print(dynamic_form)
    return dynamic_form

form_handle.py

原文地址:https://www.cnblogs.com/jintian/p/11324581.html

时间: 2024-10-29 06:19:58

CRM项目实战-动态model form 增加自定义样式的相关文章

CRM项目实战-动态modelform的实现

生成类 f=type("Foo" , (object,) , {'func': }) {% extends 'kingadmin/index.html' %} {% load kingadmin_tags %} {% block right-content-container %} <h2 class="page-header">{% get_model_name admin_class %}</h2> <h4 class="

CRM项目实战-kingadmin model obj list 页面开发

from kingadmin.admin_base import BaseKingAdmin class AdminSite(object): def __init__(self): self.enabled_admins = {} def register(self,model_class,admin_class=None): """注册admin表""" #print("register",model_class,admi

Android项目实战(十):自定义倒计时的TextView

原文:Android项目实战(十):自定义倒计时的TextView 项目总结 -------------------------------------------------------------------------------------------- 有这么一个需求: 我有一个ListView,每一个列表项 布局如上图,顶部一个大图片展示,中部一个音频播放,底部一个描述文字. 在这个界面,一次只能点击一个列表项的播放按钮,那么我直接在ListView所属的activity创建了唯一的

CRM项目实战,动态菜单设计

OneToOnefield反向查询:obj.user.all() ForeignKey反向查询:obj.user_set.all() {% extends 'base.html' %} {% block body %} <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-hea

CRM项目实战-kingadmin根据list-display配置生成的数据

a.get_status_display() 获取choice对应的值 models.User._meta.fields 获取model所有的字段对象 models.User._meta.get_field() 获取某个字段的对象 field.get_internal_type() 获取某个字段对象的字段类型 对象 b.replace() 替换初始化数据 from kingadmin.sites import site from kingadmin.admin_base import BaseK

猫猫学iOS 之微博项目实战(2)微博主框架-自定义导航控制器NavigationController

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 一:添加导航控制器 上一篇博客完成了对底部的TabBar的设置,这一章我们完成自定义导航控制器(NYNavigationController). 为啥要做自定义呢,因为为了更好地封装代码,并且系统的UINavigationController不能满足我们的需求了,所以得自定义. 首先,我们在NYTabBarViewContro

android项目实战-背呗单词DEV05-主界面自定义menu

该篇说明 该篇我们进行主界面自定义底部菜单使用的讲解 主界面也就是当天任务界面FragmentActivity 自定义menu的功能需要导入V1UILibrary即可 源码地址:https://github.com/vomzoo/VOMAndroidUILib 在主界面只是调用自定义menu,具体实现暂请看V1UILibrary源码 效果如图 流程图 主要UI功能 1> 重写onCreateOptionsMenu并添加一项 /** * 自定义menu,必须创建一项 */ @Override pu

CRM项目实战-kingadmin自动发现及注册功能开发

{% extends 'kingadmin/index.html' %} {% block right-content-container %} <h2 class="page-header">app</h2> <div> {% for app_name,app_tables in site.enabled_admins.items %} <table class="table table-striped"> <

CRM项目实战-kingadmin m2m filter_horizonal

input标签 绑定onchange事件,移出输入框才触发:绑定oninput事件,是实时触发 jQuery:v.toUpperCase() 变大写 v.search(n) n不存在字符串v中,返回-1 原文地址:https://www.cnblogs.com/jintian/p/11337228.html