カスタム テスト フレームワークのフロント エンドを作成しています。各テストにはいくつかの関連スクリプトがあり、各スクリプトにはいくつかの関連パラメーターがあり、各パラメーターにはパラメーター タイプがあります。特定のテストのすべてのパラメーターを編集するフォームを作成し、関連するパラメーターの型に応じて各フィールドを表示および検証できるようにしたいと考えています。つまり、パラメーターの型が「bool」の場合、入力はチェックボックスにする必要があります。タイプが URL の場合は、適切に検証する必要があります。
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() を使用して情報を適切なレコードに戻します。
フォームセット内のフォームにタイプに基づいてウィジェットを選択させる方法があるはずです。または、私の現在の方法よりも優れた何か。