前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django实战-调查问卷表设计

Django实战-调查问卷表设计

作者头像
小团子
发布2019-10-09 15:40:07
2.5K0
发布2019-10-09 15:40:07
举报
文章被收录于专栏:数据云团数据云团

Django实战-csrf_token 跨站请求

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

设计如下类型的调查问卷表:问卷类型包括(打分,建议,选项),先来看看一个简单的问答。

  • 您最擅长的是什么编程语言?
  • A.Java  B.C++ C. Python D.PHP

对于上面一个类型的问答,可以知道,一个问卷系统主要包括:问卷,问卷中每个题目,每个题目的答案,以及生成问卷记录。常规设计表如下:

代码语言:javascript
复制
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType
代码语言:javascript
复制
class Survery(models.Model):
    """
    问卷
    ID        name            by_class      creator
    1    第一次班级调查      大一计算机205班     张老师
    """
    name = models.CharField(verbose_name="调查问卷名称", max_length=128, unique=True)
    by_class = models.ForeignKey("ClassList", verbose_name="问卷调查班级", on_delete=models.SET_NULL)
    date = models.DateTimeField(verbose_name="问卷创建日期", auto_now_add=True)
    creator = models.ForeignKey("UserInfo", verbose_name="创建者", on_delete=models.SET_NULL)
代码语言:javascript
复制
class SurveryItem(models.Model):
    """
    问卷题目
    ID                 survery                       name                   date          answer_type
     1    1(代表上面创建的第一次班级调查)      您最喜欢吃什么水果?         xxx-xxx-xx             1
     1    1(代表上面创建的第一次班级调查)      您最喜欢看什么书籍?         xxx-xxx-xx             2
     1    1(代表上面创建的第一次班级调查)      您最喜欢什么英雄人物?       xxx-xxx-xx             3
    """
    survery = models.ForeignKey('Survery', verbose_name='问卷', on_delete=models.SET_NULL)
    name = models.CharField(verbose_name="调查问题", max_length=255)
    date = models.DateField(auto_now_add=True)
    answer_type_choices = (
        (1, "打分(1~10分)"),
        (2, "单选"),
        (3, "建议"),
    )
    answer_type = models.IntegerField(verbose_name="问题类型", choices=answer_type_choices, default=1)
代码语言:javascript
复制
class SurveryChoices(models.Model):
    """
    问卷选项答案(针对选项类型)
    ID    item    content   points
    1       2       A         10分
    1       2       B         9分
    1       2       C         8分
    1       2       D         7分
    """
    item = models.ForeignKey('SurveryItem', verbose_name='问题', on_delete=models.SET_NULL)
    content = models.CharField(verbose_name='内容', max_length=256)
    points = models.IntegerField(verbose_name='分值')
代码语言:javascript
复制
class SurveryRecord(models.Model):
    """
    问卷记录
    ID    survery      student_name   survery_item  score  single  suggestion  date
    1        1            1               1          10分   null      null    xxxxx     
    1        1            1               2          null     A       null    xxxxx     
    1        1            1               3          null   null      XXXXX    xxxxx     
    """
    survery = models.ForeignKey('Survery', verbose_name="问卷", on_delete=models.SET_NULL)
    student_name = models.ForeignKey('Student', verbose_name="学生姓名", on_delete=models.SET_NULL)
    survery_item = models.ForeignKey('SurveryItem', verbose_name="调查项", on_delete=models.SET_NULL)

    score = models.IntegerField(verbose_name="评分", blank=True, null=True)
    single = models.ForeignKey('SurveryChoices', verbose_name='单选', blank=True, null=True, on_delete=models.SET_NULL)
    suggestion = models.TextField(verbose_name="建议", max_length=1024, blank=True, null=True)

    date = models.DateTimeField(verbose_name="答题日期", auto_now_add=True)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯问卷
腾讯问卷是专业的在线问卷调查平台,支撑了腾讯核心业务的⽤户、市场、产品研究工作。平台提供基于数据收集的专业调查研究解决方案,覆盖问卷调查、信息上报、在线测评、在线考试、360度评估、投票打卡等工作场景,致力于为客户提供高效的洞察决策工具。同时平台还拥有超百万级的真实样本用户,可以提供高效、精准的问卷有偿投放服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档