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