【发布时间】:2011-12-14 14:57:19
【问题描述】:
我正在使用 Django 构建一个个人项目,以训练自己(因为我喜欢 Django,但我缺少技能)。我有基本要求,我会 Python,我仔细阅读了 Django 的书,如果不是三次。
我的目标是创建一个简单的监控服务,使用基于 Django 的 Web 界面来检查我的“节点”(服务器)的状态。每个节点都有多个“服务”。应用程序检查每个节点的每个服务的可用性。
我的问题是我不知道如何在我的数据库中表示不同类型的服务。我想到了两个“解决方案”:
- single 服务模型,带有“serviceType”字段,并且字段混乱。 (我在数据库建模方面没有丰富的经验,但这看起来……对我来说“很糟糕”)
- 多种服务模式。我喜欢这个解决方案,但我不知道如何在同一领域引用这些DIFFERENT服务。
这是我的 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”。老实说,我为此寻找解决方案,我听说过“泛型关系”,三联表,但我并没有真正理解这些东西。
而且,英语不是我的母语,所以谈到数据库结构和语义,我对所读内容的知识和理解是有限的(但这是我的问题)
【问题讨论】:
标签: python django model-view-controller model