如何创建三方多人关系django
需要在django admin中建模服务器、应用程序和服务器角色之间的关系如何创建三方多人关系django,django,database-design,django-admin,Django,Database Design,Django Admin,需要在django admin中建模服务器、应用程序和服务器角色之间的关系 服务器可以有一个或多个应用程序 应用程序可以托管在一台或多台服务器上 服务器具有应用程序的一个或多个角色(DB服务器角色, WEB服务器角色等) i、 e:ServerA拥有AppX的角色(Web服务器和Db服务器,2个角色) 服务器A具有应用程序的角色(Web服务器) ServerRole下面的代码是中介模型 以下是我的想法。到目前为止效果很好,但我是否遗漏了什么 class Application(model
- 服务器可以有一个或多个应用程序
- 应用程序可以托管在一台或多台服务器上
- 服务器具有应用程序的一个或多个角色(DB服务器角色,
WEB服务器角色等)
- i、 e:ServerA拥有AppX的角色(Web服务器和Db服务器,2个角色)
- 服务器A具有应用程序的角色(Web服务器)
class Application(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
class Server(models.Model):
name = models.CharField(max_length=200)
apps = models.ManyToMany('Application', related_name='servers')
class ServerRole(models.Model):
name = models.CharField(max_length=200)
servers = models.ManyToMany(Server, related_name='serverrole')
如果我正确理解了您的需求,这更像是您需要的
class ServerRole(models.Model):
name = models.CharField(max_length=200)
class Application(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
class Server(models.Model):
name = models.CharField(max_length=200)
apps = models.ManyToMany('Application', through='ServerRole', related_name='servers')
一个服务器可以有很多应用程序,一个应用程序可以有很多服务器。如果某个应用程序位于特定的服务器上,它应该只有一个角色(如果不是您的整个系统,因为它更复杂、更难编写),可以通过多对多关系的直通模型来实现。尝试理解您的代码和我的代码之间的差异。你的第二句话是:如果一个应用程序在一个特定的服务器上,它应该只有一个角色。事实并非如此。一台服务器可以为一个特定应用程序提供多个角色。例子。对于一个特定的应用程序,服务器A可能具有web服务器+代理服务器的角色。同一个服务器A可能具有应用程序B的代理服务器角色。这就是为什么我认为我的代码工作正常。但也许我错了。想法?是的,这也是我的意思。如果chess应用程序位于服务器A上,则它应该是代理。但是你不能在服务器A上有另一个chess应用程序实例,服务器A充当redis缓存。作为旁白,与你的项目无关。要成为数据库的服务器只能是数据库。其他端口不应向其开放。此外,DB的硬件配置与web服务器、memcache或redis非常不同。所以,他们真的不应该在高流量环境下试图成为各行各业的高手。同意你的例子。我将尝试您的代码,看看它与我之前的代码有什么不同(如上面的示例所示)。关于你的第二点。我同意你的看法。更像是,一台服务器对于一个appA既是FTP又是WEB,对于AppB则是唯一的WEB。我很想知道你的代码和我的代码有什么不同。你有作为中介的服务器模型,我有作为中介的角色。我还缺少什么吗?唯一的另一件事是尝试使用SFTP而不是FTP