从前端创建Django调查表单

时间:2017-07-26 14:31:38

标签: python django django-models django-forms

我正在开发类似应用的GoogleSurvey表单,我需要让前端用户构建调查。我需要很少的准则才能开始。我需要的是构建一个可以生成Django-admin等形式的视图,然后可以在站点使用相同的表单从其他最终用户那里收集数据。

请告知。

1 个答案:

答案 0 :(得分:1)

这是一个广泛的问题,但我会尝试尽可能多地涵盖细节。  表单生成器类将包含问题,form_id将负责获取表单的所有问题。因此,如果您想获得id = 1的表单的所有问题,那么您可以轻松过滤。另一种方法是创建一个表,只是为了保持仅包含表单id和创建者和表单构建器的表单的跟踪将只包含问题。

存储在数据库中:

class FormBuilder(models.Model):
    form_creator = models.ForeignKey(User)
    form_id = models.AutoIncrementField()
    question_text = models.TextField()
    option_types = models.CharField(max_length=30) # drop down or text fields or some other
    options = models.TextField(null=True) # this can be null for text field like answers and for multiple options it can be stored as comma seperated field
    created_at = models.DateTimeField()

如何存储回复:

class FormResponses(models.Model):
    form_id = models.ForeignKey(FormBuilder)
    responses = models.TextField(null=True) # this follows the same analogies as options in FormBuilder
    created_at = models.DateTimeField()

查看:

要记住观点的一些事情:

  • 您始终会检查用户选择的实际存在的选项。
  • 用户不要填写多个调查。如果您还想要此功能,那么您可以在formbuilder中添加一个字段来确保这一点。

示例:

示例问题看起来像这样。

Q值。怎么回事? #question text 答。在表单构建器模型中,#option_type = text和options = null非常棒  如果这是一个基于选择的问题那么 option_type=choicesoptions=good, excellent, better逗号将列表分隔为字符串。

在答案模型中,响应是一个文本字段,因此可以将答案放入其中。

这就像一个伪代码,所以你可能会遇到语法错误,但这会给你一个要点。如果您不从头开始计划解决方案,This可能会有所帮助。