一、解决了什么问题python
一、这台服务器是谁管理的?
二、真正出问题了我敢上去改代码了?不能
三、因此一台机器必须有运维人员和业务负责人,可是业务负责人不登录这个系统,
四、要想登录这个系统必需要用用户名密码,可是我这里只有部分人登陆,应该怎么写服务器
二、代码运维
class UserProfile(models.Model): """ 用户信息,运维管理员和业务负责人 50人 """ name = models.CharField('姓名', max_length=32) email = models.EmailField('邮箱') phone = models.CharField('座机', max_length=32) mobile = models.CharField('手机', max_length=32) class Meta: verbose_name_plural = "用户表" def __str__(self): return self.name
一、解决了什么问题日志
一、有些用户能够登陆有些不能够,因此要作一个表关联
二、一我的只能有一个用户名和密码
三、能登陆在这AdminInfo这张表,不能登陆的在UserProfile表里server
二、代码blog
class AdminInfo(models.Model): """ 用户登陆: 10 """ user = models.OneToOneField("UserProfile") username = models.CharField('用户名', max_length=32) password = models.CharField('密码', max_length=32)
一、解决了什么问题博客
一、这个机器在那个机房?
二、属于哪一个部门,因此咱们要建立一个表,包含机房和部门
三、刚买回来的服务器没有部门,部门就是运维部,
四、部门和服务器是什么关系?
五、在小公司可能会出现服务器和业务线应该是多对多,可是有正规的有运维工程师的或者作运维自动化的公司,
必定保证一个服务器只属于一个业务线
六、必需要用就写个多对多的话
你说这台服务器要不要有管理员?要不要有业务负责人?业务线的负责人it
二、代码自动化
class Server(models.Model): """ 服务器信息 """ # asset = models.OneToOneField('Asset') idc = models.ForeignKey(IDC,null=True, blank=True) cabinet_num = models.CharField('机柜号', max_length=30, null=True, blank=True) cabinet_order = models.CharField('机柜中序号', max_length=30, null=True, blank=True) business_unit = models.ForeignKey(BusinessUnit,null=True, blank=True) tags = models.ManyToManyField(Tag)
一、解决了什么问题:class
一、在公司的运维的力度不是管这台机器,他管这个部门
二、一我的管100台机器,一个运维负责一个或多个部门
三、因此管理员没有必要给它写在这,他和业务线关联,业务线又和服务器关联
二、代码
class BusinessUnit(models.Model): """ 业务线(部门) """ name = models.CharField('业务线', max_length=64, unique=True) # 销售,1,2 """ 若是反向查找,就有两个ForeignKey,这种状况必定要加related_name """ contact = models.ForeignKey(UserGroup,related_name='c') # 业务线联系人:1 manager = models.ForeignKey(UserGroup,related_name='m') # 运维管理人员:2 class Meta: verbose_name_plural = "业务线表" def __str__(self): return self.name
一、待解决问题:
一、若是业务线联系人和运维管理人员联系不上怎么办?
二、因此咱们就设置2个,也就是备胎,因此我设置比较灵活我能够是一个也能够是两个
三、因此我再建一张表,直接再也不和UserProfile关联而是和UserGroup关联
四、这样咱们一我的一个组,也能够多个组一个组
二、代码
class UserGroup(models.Model): """ 用户组 ID 名称 1 组A 2 组B 3 组C 用户组和用户关系表 组ID 用户ID 1 1 1 2 2 2 2 3 3 4 """ name = models.CharField(max_length=32, unique=True) users = models.ManyToManyField('UserProfile') class Meta: verbose_name_plural = "用户组表" def __str__(self): return self.name
一、解决了什么问题
一、若是服务器多的话,我能够给它打个标签
二、就像咱们写博客的时候能够打多个标签
三、一台服务器能够打多个标签?和小米作了一次技术分享,他对每一台机器打多个标签
四、之后查找的时候能够经过几个关键字能进行快速的查找
二、代码
class Tag(models.Model): """ 资产标签 """ name = models.CharField('标签', max_length=32, unique=True) class Meta: verbose_name_plural = "标签表" def __str__(self): return self.name
三、错误日志代码
class ErrorLog(models.Model): """ 错误日志,如:agent采集数据错误 或 运行错误 """ server_obj = models.ForeignKey('Server', null=True, blank=True) title = models.CharField(max_length=16) content = models.TextField() create_at = models.DateTimeField(auto_now_add=True) class Meta: verbose_name_plural = "错误日志表" def __str__(self): return self.title