【问题标题】:Python Django auto populate inline formsPython Django 自动填充内联表单
【发布时间】:2015-11-19 10:56:01
【问题描述】:

我目前正在研究“工作/命令抽象管理器”。 我想要完成的是: - jobInvoker 定义参数,例如要调用的类,要设置的参数以初始化(键/值) - 工具可能需要使用特定的作业调用程序,并且它需要在启动时定义作业调用程序参数(例如:需要设置实际命令行以启动“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)

对于“运行参数”

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)

【问题讨论】:

    标签: python django inline-formset


    【解决方案1】:

    我终于找到了一个解决方案,简单地使用与定义我想要的参数的相关模型类的多对多关系。为了过滤内联数据,我只是用相关表数据进行过滤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 2013-05-23
      • 2018-01-18
      • 2011-05-23
      • 2011-10-22
      • 2018-11-28
      • 2014-06-11
      相关资源
      最近更新 更多