Я пытаюсь создать приложение для управления имеющимся у нас сетевым оборудованием.Но мне нужна помощь, чтобы выяснить, как создавать свои модели для коммутаторов и сетевой карты.
Итак, я создал 3 модели:
- Сетевая карта, связанная с ForeignKey с оборудованием.Например, 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)
Итак, в admin я могу добавить сетевую карту к оборудованию и «подключить» эту сетевую карту кпорт коммутатора.Но, конечно, когда у меня есть 10 коммутаторов с 48 портами, выпадающий список слишком длинный.Я попробовал raw_id_field, но он не очень удобен для пользователя.
Что мне нужно, так это в админке: - выпадающий список, где я могу выбрать коммутатор - второй выпадающий список, где я могу выбрать порт на выбранном ранее коммутаторе, показывая только свободные порты на этом коммутаторе,
Поэтому у меня следующие вопросы:
- мой путь с моделью порта коммутатора хорош?
- если да, как заставить двух выбранных работать так, как я хочу?
- если нет, что мне делать?
Я также пытался не иметьмодель порта коммутатора.Таким образом, карта связана только с коммутатором.В этом сценарии я могу добавить число (в PositiveSmallIntegerField), чтобы определить, к какому порту коммутатора подключена карта.Очень удобный для пользователя ... НО мне нужно добавить информацию о VLAN на моем порту на стороне коммутатора.
Есть идеи, ребята?
Спасибо!