models.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # coding=utf-8
  2. from django.db import models
  3. from django.utils import timezone
  4. from django.conf import settings
  5. from apps.foundation.models import Chapter
  6. class ExamQuestion(models.Model):
  7. SINGLE = 1
  8. MULTIPLE = 2
  9. FILL = 3
  10. JUDGMENT = 4
  11. TYPE_CHOICES = (
  12. (SINGLE, u'单选题'),
  13. (MULTIPLE, u'多选题'),
  14. (FILL, u'填空题'),
  15. (JUDGMENT, u'判断题'),
  16. )
  17. TYPE_JSON = [{'id': item[0], 'value': item[1]} for item in TYPE_CHOICES]
  18. SIMPLE = 1
  19. MID = 2
  20. HARD = 3
  21. DIFFICULTY_CHOICES = (
  22. (SIMPLE, u'简单'),
  23. (MID, u'中等'),
  24. (HARD, u'困难'),
  25. )
  26. DIFFICULTY_JSON = [{'id': item[0], 'value': item[1]} for item in DIFFICULTY_CHOICES]
  27. chapter = models.ForeignKey(Chapter, verbose_name=u"章节", on_delete=models.PROTECT)
  28. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"题型")
  29. difficulty = models.PositiveSmallIntegerField(choices=DIFFICULTY_CHOICES, verbose_name=u"难度")
  30. scores = models.IntegerField(verbose_name=u'分数')
  31. title = models.TextField(verbose_name=u"题目")
  32. judgment = models.BooleanField(verbose_name=u'判断题答案', default=False)
  33. analysis = models.TextField(verbose_name=u"解析", null=True, blank=True)
  34. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'录入人',related_name='exam_question_user', editable=False, on_delete=models.PROTECT)
  35. create_time = models.DateTimeField(verbose_name=u"录入时间", default=timezone.now, editable=False)
  36. delete = models.BooleanField(verbose_name=u'删除', default=False, editable=False)
  37. class Meta:
  38. db_table = "exam_question"
  39. ordering = ['-id']
  40. verbose_name = u"试题管理"
  41. default_permissions = ()
  42. class ExamQuestionOption(models.Model):
  43. main = models.ForeignKey(ExamQuestion, verbose_name=u"试题", on_delete=models.PROTECT)
  44. content = models.TextField(verbose_name=u"内容")
  45. right = models.BooleanField(verbose_name=u'正确答案', default=False)
  46. class Meta:
  47. db_table = "exam_question_option"
  48. ordering = ['id']
  49. verbose_name = u"试题选项"
  50. default_permissions = ()
  51. class ExamQuestionFill(models.Model):
  52. main = models.ForeignKey(ExamQuestion, verbose_name=u"试题", on_delete=models.PROTECT)
  53. content = models.TextField(verbose_name=u"内容")
  54. order = models.IntegerField(verbose_name=u'排序')
  55. class Meta:
  56. db_table = "exam_question_fill"
  57. ordering = ['order', 'id']
  58. verbose_name = u"试题填空"
  59. default_permissions = ()
  60. class ExamQuestionFeedback(models.Model):
  61. TYPE = 1
  62. ANSWER = 2
  63. ANALYSIS = 3
  64. OTHER = 4
  65. TYPE_CHOICES = (
  66. (TYPE, u'题目类型'),
  67. (ANSWER, u'题目答案'),
  68. (ANALYSIS, u'题目解析'),
  69. (OTHER, u'其它'),
  70. )
  71. TYPE_JSON = [{'id': item[0], 'value': item[1]} for item in TYPE_CHOICES]
  72. UNTREATED = 1
  73. PROCESSED = 2
  74. STATUS_CHOICES = (
  75. (UNTREATED, u'未处理'),
  76. (PROCESSED, u'已处理'),
  77. )
  78. STATUS_JSON = [{'id': item[0], 'value': item[1]} for item in STATUS_CHOICES]
  79. main = models.ForeignKey(ExamQuestion, verbose_name=u"试题", on_delete=models.PROTECT)
  80. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"错误类型")
  81. desc = models.TextField(verbose_name=u"错误描述")
  82. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'反馈人',related_name='exam_question_feedback_user', editable=False, on_delete=models.PROTECT)
  83. create_time = models.DateTimeField(verbose_name=u"反馈时间", default=timezone.now, editable=False)
  84. status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'处理状态', default=UNTREATED)
  85. process_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"处理人", on_delete=models.PROTECT, null=True, related_name="exam_question_feedback_ref_process_user")
  86. process_time = models.DateTimeField(verbose_name=u'处理时间', null=True)
  87. class Meta:
  88. db_table = "exam_question_feedback"
  89. ordering = ['-id']
  90. verbose_name = u"错误反馈"
  91. default_permissions = ()