我正在为自定义测试框架制作前端。每个测试都有一些关联的脚本,每个脚本都有一些关联的参数,每个参数都有一个参数类型。我希望能够创建一个表单来编辑给定测试的所有参数,并根据关联的参数类型显示和验证每个字段,即如果参数类型是“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() 将信息返回到适当的记录中。
在我看来,应该有一种方法可以使表单集中的表单根据类型选择一个小部件。或者比我现在的方式更好的东西。