Django手动验证表单字段

时间:2016-01-04 13:07:40

标签: python django django-forms django-validation

我有一个动态生成的表单。我无法预测将会包含多少文本输入或多个选项。因此,我不能使用ModelForm或类似的东西。

我想知道我是否可以利用Django字段中的内置验证代码并以某种方式手动应用它们,因为我可以确定用户输入的类型(例如,无论是文本,单选按钮,复选框等)。这样的事情会很棒:

if type == 'Text':
    #perform validation
    #get clean data
elif type == 'Checkbox':
    #perform validation 
    #get clean data

更新:我的网站允许用户根据他们的需求生成调查。例如,用户决定创建一个包含两个问题的调查:

  1. 你叫什么名字?
  2. 智能手机的品牌是什么? A)iPhone B)HTC
  3. 第一个问题是<input type="text">,第二个问题是<input type="radio">

    有关生成什么类型​​的问题的信息存储在数据库中。所以我会在DB中有这样的行来描述这个问题:

    ID类型文字
    1 TEXT你叫什么名字?
    2 RADIO你叫什么名字?

    当调查上线并且用户填写时。我需要验证他们的输入。如何利用Django的内置验证功能来处理这种情况?

1 个答案:

答案 0 :(得分:0)

我建议您使用model formsets,因为它们就在这里,正是您所说的:处理任意数量的字段。这样你仍然可以使用Django的验证(非常方便)。

如果您发布了正在处理的样本表单,我可以草拟一个formset示例。

更新:啊,您需要调查功能吗?这是一个完全不同的野兽。然后我无法想象不利用existing solutions中的一个的理由。 ed-questionnaire 包似乎是最具特色和成熟的包。与Django一样,您可以相对轻松地自定义它。

如果我还没说服你,请看看它的models.py文件。你真的有时间和意志重新实现所有这些东西吗?