代码的优化
代码的优化一定是在你把功能实现之后再去优化(先努力实现再考虑优化)
-
将所有的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='关联服务器')
-
项目展示页面额外展示当前两个字段