Я создаю личный проект с Django, чтобы обучиться (потому что я люблю Django, но мне не хватает навыков). У меня есть основные требования, я знаю Python, я внимательно прочитал книгу Django дважды, если не трижды.
Моя цель - создать простой сервис мониторинга, с веб-интерфейсом на основе Django, позволяющим мне проверять состояние моих "узлов" (серверов). Каждый узел имеет несколько "сервисов". Приложение проверяет доступность каждого сервиса для каждого узла.
Моя проблема в том, что я понятия не имею, как представить различные типы сервисов в моей базе данных. Я думал о двух "решениях" :
Вот небольшой отрывок из моего models.py файла: (я удалил все, что не относится к этой проблеме)
from django.db import models
# Create your models here.
class service(models.Model):
port = models.PositiveIntegerField()
class Meta:
abstract = True
class sshService(service):
username = models.CharField(max_length=64)
pkey = models.TextField()
class telnetService(service):
username = models.CharField(max_length=64)
password = models.CharField(max_length=64)
class genericTcpService(service):
pass
class genericUdpService(service):
pass
class node(models.Model):
name = models.CharField(max_length=64)
# various fields
services = models.ManyToManyField(service)
Конечно, строка с ManyToManyField является ошибочной. Я понятия не имею, что поставить вместо "*Service". Я честно искал решения по этому поводу, слышал о "generic relations", triple-join таблицах, но не очень понимал эти вещи.
Более того, английский не является моим родным языком, поэтому, когда речь заходит о структуре и семантике баз данных, мои знания и понимание прочитанного ограничены (но это моя проблема)