我有一个动态生成的表单。我无法预测将会包含多少文本输入或多个选项。因此,我不能使用ModelForm
或类似的东西。
我想知道我是否可以利用Django字段中的内置验证代码并以某种方式手动应用它们,因为我可以确定用户输入的类型(例如,无论是文本,单选按钮,复选框等)。这样的事情会很棒:
if type == 'Text':
#perform validation
#get clean data
elif type == 'Checkbox':
#perform validation
#get clean data
更新:我的网站允许用户根据他们的需求生成调查。例如,用户决定创建一个包含两个问题的调查:
第一个问题是<input type="text">
,第二个问题是<input type="radio">
有关生成什么类型的问题的信息存储在数据库中。所以我会在DB中有这样的行来描述这个问题:
ID类型文字
1 TEXT你叫什么名字?
2 RADIO你叫什么名字?
当调查上线并且用户填写时。我需要验证他们的输入。如何利用Django的内置验证功能来处理这种情况?
答案 0 :(得分:0)
我建议您使用model formsets,因为它们就在这里,正是您所说的:处理任意数量的字段。这样你仍然可以使用Django的验证(非常方便)。
如果您发布了正在处理的样本表单,我可以草拟一个formset示例。
更新:啊,您需要调查功能吗?这是一个完全不同的野兽。然后我无法想象不利用existing solutions中的一个的理由。 ed-questionnaire 包似乎是最具特色和成熟的包。与Django一样,您可以相对轻松地自定义它。
如果我还没说服你,请看看它的models.py文件。你真的有时间和意志重新实现所有这些东西吗?