【发布时间】:2019-03-27 01:09:15
【问题描述】:
我正在尝试构建一个应用程序来管理我们拥有的一些网络设备。但我需要帮助来弄清楚如何为交换机和网卡创建模型。
所以我创建了 3 个模型:
- 与设备的外键链接的网卡。例如 server-dc01 有一个网卡。
- 开关,这是我的开关。
- SwitchPort,在这里我可以创建端口并将它们链接到交换机。因此,如果一个交换机有 24 个端口,我需要创建 24 个交换机端口并将它们全部链接到我的交换机。有点烦。我不知道这是不是最好的。
这是我现在拥有的模型:
class NetworkCard(models.Model):
equipment = models.ForeignKey('Equipment', on_delete=models.CASCADE)
attached_to_port = models.OneToOneField('SwitchPorts', on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return self.name
class Switch(Equipment):
number_of_ports = models.PositiveSmallIntegerField()
class SwitchPorts(models.Model):
number = models.PositiveSmallIntegerField()
switch = models.ForeignKey('Switch', on_delete=models.CASCADE)
因此,在管理员中,我可以将网卡添加到设备,然后将该网卡“插入”到交换机端口。但是,当然,当我有 10 个交换机和 48 个端口时,下拉选择太长了。我尝试了 raw_id_field,但它也不是真正的用户友好。
我想要的是这样的 admin : - 一个下拉选择,我可以在其中选择开关 - 第二个下拉列表,我可以在其中选择之前选择的交换机上的端口,仅显示该交换机上的空闲端口。
因此,我的问题是:
- 我的交换机端口模型好用吗?
- 如果是,如何让这两个选择按我的意愿工作?
- 如果没有,我该怎么办?
我也试过没有交换机端口模型。所以一张卡只连接到一个开关。在这种情况下,我可以添加一个数字(在 PositiveSmallIntegerField 中)来定义卡插入交换机上的哪个端口。非常用户友好...但是我需要在交换机端的端口上添加有关 vlan 的信息。
各位有什么想法吗?
谢谢!
【问题讨论】: