我正在尝试构建一个应用程序来管理我们拥有的某些网络设备。但是我需要帮助来弄清楚如何为交换机和网卡创建模型。
所以我创建了3个模型:
这是我现在拥有的型号:
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)
因此,在admin中,我可以将网卡添加到设备,然后将该网卡“插入”到交换机端口。但是,当然,当我有10个带有48个端口的交换机时,下拉选择的时间太长。我尝试过raw_id_field,但它也不是用户友好的。
我想要的是admin这样的东西: -下拉菜单中选择开关 -第二个下拉菜单,在这里我可以选择之前选择的交换机上的端口,仅显示该交换机上的空闲端口。
因此,我的问题是:
我也尝试没有交换机端口模型。因此,卡仅链接到交换机。在这种情况下,我可以添加一个数字(在PositiveSmallIntegerField中)以定义将卡插入交换机上的哪个端口。非常用户友好...但是我需要在交换机的端口上添加有关VLAN的信息。
有什么想法的人吗?
谢谢!
答案 0 :(得分:0)
我认为您正在寻找的是django-smart-selects。该软件包可让您将模型链接在一起,以便在管理员中选择一个AJAX即可加载下一个可选选项。
对于您的模型-我不会使用字符串表示形式。您可以使用模型代替(即switch = models.ForeignKey(Switch, ...)
。最后,除非您确定它是一个抽象类(我看不到),否则我不确定是否继承Equipment
。