我正在考虑创建某种 Jmeter 板,以便在线执行一些简单的服务器管理任务。尽可能多地存储在数据库中,这样我就可以在线配置任务,而不是编程。
我试图在我的数据模型中实现以下内容:
我有一个应用程序模型:
class Application(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return self.name
字符串
在我的服务器模型中,我将ManyToManyFieldMap到我的应用程序模型,因此我可以选择在此服务器上运行的一个或多个应用程序:
from applications.models import Application
class Server(models.Model):
name = models.CharField(max_length=20,blank=False, null=False)
application = models.ManyToManyField(Application, blank=True, related_name='applications')
ip = models.CharField(max_length=15, blank=True)
dns = models.CharField(max_length=100, blank=True)
型
为了支持多种服务器类型(Web服务器,数据库),我有一个Servertype模型:
from applications.models import Application
class Servertype(models.Model):
application = models.ForeignKey(Application, on_delete=models.CASCADE)
type = models.CharField(max_length=20, blank=False, null=False)
order = models.IntegerField(null=False)
def __str__(self):
return "%s - %s" % (self.application, self.type)
class Meta:
ordering = ["application", "order"]
型
现在我想把最后两个Map在一起,这样我就可以连接Server和Servertype,但是将Servertype的选择限制为选择为Application in Server的任何内容,并且为这个Application in Servertype定义。但我不太确定这是怎么回事。当然不是这样的:
from servers.models import Server
from applications.models import Application
class ServerServertype(models.Model):
server = models.ForeignKey(Server, on_delete=models.CASCADE)
applications = models.ForeignKey(Application, on_delete=models.CASCADE, limit_choices_to=Server)
型
有人有主意吗?
2条答案
按热度按时间3zwjbxry1#
我想你应该看看这个答案:
How do I restrict foreign keys choices to related objects only in django
你似乎可以这样做:
字符串
你有没有试过这样的东西?
n3schb8v2#
对于
server
和Servertype
之间的Map,同时根据为每个服务器选择的应用程序限制Servertype
的选择,您不需要中间模型SeverServertype
,您可以使用ManyToManyField
和自定义筛选的组合,格式如下所以你models.py应该是这样的:
字符串
你的forms.py应该是这样的:
型
现在,当您创建或更新
Server
时,表单中的server_type
字段将仅显示与该服务器的所选Application
示例相关联的Servertype
选项。在处理
Server
的创建和更新时,请记住在views.py
中使用ServerForm
。所以views.py应该是这样的:
型
我希望这对你有帮助。