有没有更好的方法来减少代码的重复性,将“CONN”移动到仍然可以使用但只需要编写一次的地方。所以我仍然可以在django admin的相同字段中显示相同的信息
当我将“CONN”移到其他地方时,函数停止工作。并显示一个错误
型号.py
from .connection import HostConn
class Host(models.Model):
name = models.CharField(max_length=20)
hostname = models.CharField(max_length=20)
login = models.CharField(max_length=20)
password = models.CharField(max_length=14, blank=True, null=True)
conntype = models.CharField(max_length=7, choices=CONN_SELECT)
def __str__(self):
return self.name
def status(self):
conn = HostConn(self.hostname, self.login, self.password, self.conntype)
status = conn.host_up()
return status
def cpu(self):
conn = HostConn(self.hostname, self.login, self.password, self.conntype)
return conn.get_host_info()[0]
def memory(self):
conn = HostConn(self.hostname, self.login, self.password, self.conntype)
return conn.get_host_info()[1]
def free_memory(self):
conn = HostConn(self.hostname, self.login, self.password, self.conntype)
return conn.get_host_info()[2]
管理员.py
class HostAdmin(admin.ModelAdmin):
list_display = ('name', 'hostname', 'conntype', 'status', 'cpu', 'memory', 'free_memory', 'options')
您可以在
Host
模型上定义property
:有关属性的详细信息,请参见here
如果您担心对
conn
函数进行不必要的多次调用,您可以使用lru_cache
来记忆它。有关详细信息,请参见Python文档的this section相关问题 更多 >
编程相关推荐