Я строю персональный проект с Джанго, чтобы тренироваться (потому что я люблю Джанго, но мне не хватает навыков).У меня есть основные требования, я знаю Python, я внимательно прочитал книгу Django дважды, если не трижды.
Моя цель - создать простую службу мониторинга с веб-интерфейсом на основе Django, позволяющим мне проверять состояниемои "узлы" (серверы).Каждый узел имеет несколько «сервисов».Приложение проверяет доступность каждого сервиса для каждого узла.
Моя проблема в том, что я понятия не имею, как представлять разные типы сервисов в моей базе данных.Я подумал о двух «решениях»:
- одиночная модель сервиса, с полем "serviceType" и большим беспорядком с полями.(У меня нет большого опыта в моделировании баз данных, но это выглядит ... "плохо" для меня)
- несколько сервисных моделей.Мне нравится это решение, но тогда я понятия не имею, как я могу ссылаться на эти РАЗЛИЧНЫЕ сервисы в одной и той же области.
Это краткий отрывок из моих моделей.py file: (я удалил все, что не связано с этой проблемой)
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 является фиктивной.Я понятия не имею, что поставить вместо «* Сервис».Я честно искал решения по этому поводу, я слышал о «общих отношениях», таблицах тройного объединения, но я действительно не понимал этих вещей.
Более того, английский не является моим родным языком, поэтому, исходя из структуры и семантики базы данных, мои знания и понимание того, что я читаю, ограничены (но это моя проблема)