Я пытаюсь создать приложение в Django.Допустим, у меня есть эта модель:
class Server(model.Models):
hosted_by = models.ForeignKey('Self', limit_choices_to={'backup_server': True})
host = models.BooleanField(default=False)
Этот класс определяет сервер.
Каждый сервер может быть хостом, что означает, что он может размещать другие серверы (виртуальные).Таким образом, каждый сервер может быть размещен на другом сервере.Это легко.
Но вот проблема: хост может быть частью кластера хостов.Итак, виртуальный сервер может быть размещен на автономном хосте или в кластере.Когда сервер размещается в кластере, я не хочу указывать, какой хост в кластере.
Я не знаю, как управлять "hosted_by".Я пытался использовать Contenttype и общие отношения, но это было совсем не удобно для пользователя в разделе администратора.
Я создал новую модель:
class Cluster(models.Model):
Итак, мой Сервер теперь выглядит так:
class Server(model.Models):
hosted_by = models.ForeignKey('Cluster' ...)
host = models.BooleanField(default=False)
member_of_cluster = models.ForeignKey('Cluster' ...)
Кроме того, что мой Сервер дважды связан с Кластером (но с related_name это работает), теперь хост может быть связан только с кластером ...
Есть ли простой и простой способ сделать что-то вроде:
hosted_by = models.ForeignKey('Self' OR 'Cluster', ...)
Это было быполезно в моем случае: P
В любом случае, я застрял с этим.Конечно, я мог бы сделать что-то вроде:
hosted_by_cluster = models.ForeignKey('Cluster' ...)
hosted_by_standalone_host = models.ForeignKey('Self', limit_choices_to={'backup_server': True})
host_standalone = models.BooleanField(default=False)
member_of_cluster = models.ForeignKey('Cluster' ...)
Но я не уверен, что мне нравится идея ...
Кроме того, прежде чем серьезно задуматься над этим, я попытался, чтобы каждый хостбыть в кластере.Так что у меня будет кластер только с одним хостом.Я тоже не уверен, хорошая ли это идея.
Любая помощь будет принята с благодарностью.Заранее спасибо!