代码的优化

代码的优化

代码的优化一定是在你把功能实现之后再去优化(先努力实现再考虑优化)

  • 将所有的modelform单独抽取出来

  • 将modelform类中所有公共的部分抽取出来形成基类

    """
    什么是类?
    	类是对象公共的属性和技能的结合体
    什么是父类?
    	父类是类公共的属性和技能的结合体
    """
    # 父类
    from django.forms import ModelForm
    
    
    class BaseModelForm(ModelForm):
        def __init__(self,*args,**kwargs):
            super().__init__(*args,**kwargs)
            # print(self.fields)  # OrderedDict([('hostname', <django.forms.fields.CharField object at 0x10c99c198>)])
            # 给所有的字段加class属性
            for k,field_obj in self.fields.items():
                field_obj.widget.attrs['class'] = 'form-control'
                
                
                
    # 子类
    from app01.myforms.base import BaseModelForm
    from app01 import models
    
    
    class ServerModelForm(BaseModelForm):
        class Meta:
            model = models.Server
            fields = "__all__"
    
  • 当模型表字段特别多的时候,并且并不是所有的字段都需要展示到前端给用户观看

    from django.forms import ModelForm
    
    
    class BaseModelForm(ModelForm):
        # 自定义字段是否需要加额外属性的配置
        exclude_bootstrap = []
    
        def __init__(self,*args,**kwargs):
            super().__init__(*args,**kwargs)
            # print(self.fields)  # OrderedDict([('hostname', <django.forms.fields.CharField object at 0x10c99c198>)])
            # 给所有的字段加class属性
            for k,field_obj in self.fields.items():
                if k in self.exclude_bootstrap:
                    continue  # 排除在外不添加样式
                field_obj.widget.attrs['class'] = 'form-control'
    
  • 项目表需要额外添加字段

        # 线上服务器地址
        path = models.CharField(verbose_name='线上地址',max_length=64)
        # 关联服务器
        """
        一个项目可以跑在多个服务器上
        一个服务器其实也可以跑多个项目 (公司服务器不够的时候 可以混用)
        """
        servers = models.ManyToManyField(to='Server',verbose_name='关联服务器')
    
  • 项目展示页面额外展示当前两个字段

原文地址:https://www.cnblogs.com/yafeng666/p/12710497.html