Я попытался создать таблицу, используя класс, который не связан с моей базой данных в django, и этот класс хранится в models.py
, как показано ниже (InfoServer
- это класс).Я хотел использовать этот класс для заполнения таблицы, используя django_tables2
.Добавить models.Model
в качестве параметра нельзя, поскольку я не хочу сохранять этот класс в базе данных.
Всякий раз, когда я определяю model = InfoServer
в tables.py
, я получаю эту ошибку, и я полагаю, что этопотому что InfoServer
не принял models.Model
в качестве параметра.
TypeError: дескриптор ' repr ' объекта 'object' требует аргумент
Любая помощь приветствуется.
models.py
class TestServeur(models.Model):
nom = models.CharField(max_length=200)
pid = models.CharField(max_length=200)
memoire = models.IntegerField(null=True)
class InfoServer:
# "This is a class to test my knowledge of python"
def __init__(self,p = '',c = 0,m = 0):
self.pid = p
self.cpu = c
self.memoire = m
def getData(self):
return ("A server with %s memory and %s cpu" % (self.cpu,self.memoire))
views.py
def index(request):
return HttpResponse("Hello, world. You're at the index.")
def cpu_view(request):
liste = []
proc1 = Popen(['ps','-eo','pid,%cpu,%mem,comm'], stdout=PIPE, stderr=PIPE)
proc2 = Popen(['grep','java'], stdin=proc1.stdout, stdout=PIPE)
proc1.stdout.close()
for line in iter(proc2.stdout.readlines()):
clean_line = line.decode("utf-8")
info_utiles = clean_line.split()
pid,cpu,mem,*rest = info_utiles
i1 = InfoServer(pid,cpu,mem)
liste.append(i1)
table = TestServeur(liste)
RequestConfig(request).configure(table)
return render(request, 'server/cpu.html', {'output': table})
tables.py
class TableServeur(tables.Table):
class Meta:
# model = InfoServer
fields = ['pid', 'memory', 'cpu']
template_name = 'django_tables2/bootstrap4.html'