models.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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, Subject
  6. from apps.examination.examquestion.models import ExamQuestion, ExamQuestionOption
  7. class PractiseLog(models.Model):
  8. SUBJECT = 1
  9. CHAPTER = 2
  10. TYPE_CHOICES = (
  11. (SUBJECT, u'科目'),
  12. (CHAPTER, u'章节'),
  13. )
  14. TYPE_JSON = [{'id': item[0], 'value': item[1]} for item in TYPE_CHOICES]
  15. subject = models.ForeignKey(Subject, verbose_name=u"科目", on_delete=models.PROTECT)
  16. chapter = models.ForeignKey(Chapter, verbose_name=u"章节", on_delete=models.PROTECT, null=True,)
  17. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类型")
  18. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'练习人', on_delete=models.PROTECT)
  19. create_time = models.DateTimeField(verbose_name=u"开始时间", default=timezone.now, editable=False)
  20. submit_time = models.DateTimeField(verbose_name=u"结束时间", null=True, blank=True)
  21. begin_answer = models.ForeignKey('PractiseAnswerLog', verbose_name=u"开始习题", null=True, related_name='practise_log_begin_answer', editable=False, on_delete=models.PROTECT)
  22. end_answer = models.ForeignKey('PractiseAnswerLog', verbose_name=u"结束习题", null=True, related_name='practise_log_end_answer', editable=False, on_delete=models.PROTECT)
  23. right_count = models.IntegerField(verbose_name=u'正确数量', default=0, editable=False)
  24. wrong_count = models.IntegerField(verbose_name=u'错误数量', default=0, editable=False)
  25. total_count = models.IntegerField(verbose_name=u'总数量', default=0, editable=False)
  26. class Meta:
  27. db_table = "practise_log"
  28. ordering = ['-id']
  29. verbose_name = u"练习记录"
  30. default_permissions = ()
  31. class PractiseAnswerLog(models.Model):
  32. RIGHT = 1
  33. WRONG = 2
  34. WAIT_CHECK = 3
  35. STATUS_CHOICES = (
  36. (RIGHT, u'正确'),
  37. (WRONG, u'错误'),
  38. (WAIT_CHECK, u'待评分'),
  39. )
  40. STATUS_JSON = [{'id': item[0], 'value': item[1]} for item in STATUS_CHOICES]
  41. main = models.ForeignKey(PractiseLog, verbose_name=u"练习记录", on_delete=models.PROTECT)
  42. question = models.ForeignKey(ExamQuestion, verbose_name=u"试题", on_delete=models.PROTECT)
  43. status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'回答状态', null=True)
  44. discuss_answer = models.TextField(verbose_name=u"论述题答案", null=True, blank=True)
  45. discuss_scores = models.TextField(verbose_name=u"论述题得分", default=0)
  46. class Meta:
  47. db_table = "practise_answer_log"
  48. ordering = ['id']
  49. verbose_name = u"练习答题记录"
  50. default_permissions = ()
  51. class PractiseAnswerOptionLog(models.Model):
  52. main = models.ForeignKey(PractiseAnswerLog, verbose_name=u"练习答题记录", on_delete=models.PROTECT)
  53. option = models.ForeignKey(ExamQuestionOption, verbose_name=u"选项", on_delete=models.PROTECT)
  54. class Meta:
  55. db_table = "practise_answer_option_log"
  56. ordering = ['id']
  57. verbose_name = u"选择题回答"
  58. default_permissions = ()
  59. class PractiseAnswerFillLog(models.Model):
  60. main = models.ForeignKey(PractiseAnswerLog, verbose_name=u"练习答题记录", on_delete=models.PROTECT)
  61. content = models.TextField(verbose_name=u"内容", blank=True)
  62. order = models.IntegerField(verbose_name=u'排序')
  63. class Meta:
  64. db_table = "practise_answer_fill_log"
  65. ordering = ['order', 'id']
  66. verbose_name = u"填空题回答"
  67. default_permissions = ()