Python Django 自动填充内联表单
Python Django auto populate inline forms
我目前正在研究 'Job/command abstract manager'。
我想要完成的是:
- 一个 jobInvoker 定义参数,例如 class 调用,参数设置以初始化 (key / val)
- 工具可能需要使用特定的作业调用程序,并且它需要在启动时定义作业调用程序参数(例如:需要设置实际命令行以启动 'ShellJobinvoker'.
我需要在 AtgcTool 管理员(我已经使用嵌套内联 https://github.com/Soaa-/django-nested-inlines)中添加以下操作:
选择 JobInvoker 后,自动添加字段以根据 JobInvokerExpectedParam 中定义的参数设置预期参数。
作业调用程序定义:
class JobInvoker(models.Model):
name = models.CharField("ServiceJob invoker name", max_length=50, null=False)
description = models.TextField("ServiceJob invoker description", null=True, blank=True)
isAvailable = models.BooleanField("ServiceJob availability flag", default=True)
backUpAverage = models.IntegerField("ServiceJob load average value before switching to backUp", default=0)
backUp = models.ForeignKey('self', null=True, blank=True, related_name='backUpService')
clazz = models.CharField("ServiceJob invoker injected class name", max_length=150, null=False,
choices=settings.ATGC_SERVICES['SERVICE_JOB_INVOKER_IMPL'])
def __str__(self):
return self.name
class JobInvokerExpectedParam(Ordered):
class Meta:
db_table = 'atgc_job_invoker_param'
name = models.CharField("Key", max_length=100, blank=True, null=False)
default = models.CharField("Default", max_length=255, null=True, blank=True)
job_invoker = models.ForeignKey(JobInvoker)
工具模型:
class AtgcTool(models.Model):
name = models.CharField("Service Tool name", max_length=50)
version = models.CharField("Service tool current version", max_length=15)
released = models.DateField("Service tool release date", null=True)
online = models.DateField("Service tool online last update date", null=True)
description = models.TextField("Service Tool description text", null=True, blank=True)
slug = models.TextField("Service tool description slug", null=True, blank=True)
对于'run params'
class RunnableOn(models.Model):
"""
Specify if a is ServiceTool 'runnable on' a ServiceJobInvoker
"""
class Meta:
db_table = 'atgc_tool_runnable_on'
invoker = models.OneToOneField(JobInvoker)
tool = models.OneToOneField(AtgcTool)
threshold = models.IntegerField("Load average threshold", default=100)
class RunnableOnParam(KeyValPair):
class Meta:
db_table = 'atgc_tool_run_param'
mandatoryValue = True
runOn = models.ForeignKey(RunnableOn)
我终于找到了一个解决方案,简单地使用多对多关系与相关模型 class 定义我想要的参数。为了内联过滤数据,我简单地用相关表数据过滤。
我目前正在研究 'Job/command abstract manager'。 我想要完成的是: - 一个 jobInvoker 定义参数,例如 class 调用,参数设置以初始化 (key / val) - 工具可能需要使用特定的作业调用程序,并且它需要在启动时定义作业调用程序参数(例如:需要设置实际命令行以启动 'ShellJobinvoker'.
我需要在 AtgcTool 管理员(我已经使用嵌套内联 https://github.com/Soaa-/django-nested-inlines)中添加以下操作: 选择 JobInvoker 后,自动添加字段以根据 JobInvokerExpectedParam 中定义的参数设置预期参数。
作业调用程序定义:
class JobInvoker(models.Model):
name = models.CharField("ServiceJob invoker name", max_length=50, null=False)
description = models.TextField("ServiceJob invoker description", null=True, blank=True)
isAvailable = models.BooleanField("ServiceJob availability flag", default=True)
backUpAverage = models.IntegerField("ServiceJob load average value before switching to backUp", default=0)
backUp = models.ForeignKey('self', null=True, blank=True, related_name='backUpService')
clazz = models.CharField("ServiceJob invoker injected class name", max_length=150, null=False,
choices=settings.ATGC_SERVICES['SERVICE_JOB_INVOKER_IMPL'])
def __str__(self):
return self.name
class JobInvokerExpectedParam(Ordered):
class Meta:
db_table = 'atgc_job_invoker_param'
name = models.CharField("Key", max_length=100, blank=True, null=False)
default = models.CharField("Default", max_length=255, null=True, blank=True)
job_invoker = models.ForeignKey(JobInvoker)
工具模型:
class AtgcTool(models.Model):
name = models.CharField("Service Tool name", max_length=50)
version = models.CharField("Service tool current version", max_length=15)
released = models.DateField("Service tool release date", null=True)
online = models.DateField("Service tool online last update date", null=True)
description = models.TextField("Service Tool description text", null=True, blank=True)
slug = models.TextField("Service tool description slug", null=True, blank=True)
对于'run params'
class RunnableOn(models.Model):
"""
Specify if a is ServiceTool 'runnable on' a ServiceJobInvoker
"""
class Meta:
db_table = 'atgc_tool_runnable_on'
invoker = models.OneToOneField(JobInvoker)
tool = models.OneToOneField(AtgcTool)
threshold = models.IntegerField("Load average threshold", default=100)
class RunnableOnParam(KeyValPair):
class Meta:
db_table = 'atgc_tool_run_param'
mandatoryValue = True
runOn = models.ForeignKey(RunnableOn)
我终于找到了一个解决方案,简单地使用多对多关系与相关模型 class 定义我想要的参数。为了内联过滤数据,我简单地用相关表数据过滤。