1

我正在为自定义测试框架制作前端。每个测试都有一些关联的脚本,每个脚本都有一些关联的参数,每个参数都有一个参数类型。我希望能够创建一个表单来编辑给定测试的所有参数,并根据关联的参数类型显示和验证每个字段,即如果参数类型是“bool”,则输入应该是一个复选框,如果类型是 url 它应该适当地验证。

模型.py:

...
PARAM_TYPES = (('bool', 'Boolean (Flag Only)'),
               ('int', 'Integer'),
               ('ip', 'IP Address'),
               ('txt', 'Text'),
               ('url', 'url'),
               ('path', 'File Path'))

class Parameter(models.Model):
    name = models.CharField(max_length=50)
    flag = models.CharField(max_length=20)
    type = models.CharField(max_length=20, choices=PARAM_TYPES)
    description = models.TextField(max_length=200)
    ...

class ParameterInstance(models.Model):
    parameter = models.ForeignKey(Parameter)
    value = models.CharField(max_length=50, blank=True)
    ...

class ScriptInstance(models.Model):
    name = models.CharField(max_length=50)
    test = models.ForeignKey(Test) # One node may have many ScriptIntances (OneToMany)
    script = models.ForeignKey(Script) # Many ScriptInstances to one Script (ManyToOne)
    parameter_instances = models.ManyToManyField(ParameterInstance, blank=True)
    ...
...

目前,我的 views.py 正在重新打包参数类型、参数实例 id 和值信息,并且我正在根据类型在模板中呈现不同的输入。然后使用 request.POST.getlist() 将信息返回到适当的记录中。

在我看来,应该有一种方法可以使表单集中的表单根据类型选择一个小部件。或者比我现在的方式更好的东西。

4

0 回答 0