models.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. # coding=utf-8
  2. from django.db.models import F
  3. from django.db import models
  4. from django.utils import timezone
  5. from django.conf import settings
  6. from apps.examination.exam.models import ExamAnswerLog
  7. from apps.examination.examquestion.models import ExamQuestion
  8. class ErrorBook(models.Model):
  9. question = models.ForeignKey(ExamQuestion, verbose_name=u"试题", on_delete=models.PROTECT)
  10. create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'答题人', editable=False, on_delete=models.PROTECT)
  11. last_answer_log = models.ForeignKey(ExamAnswerLog, verbose_name=u"最后答题记录", on_delete=models.PROTECT)
  12. last_time = models.DateTimeField(verbose_name=u"最后出错时间", default=timezone.now)
  13. wrong_count = models.IntegerField(verbose_name=u'出错次数', default=0, editable=False)
  14. class Meta:
  15. db_table = "practise_error_book"
  16. ordering = ['-id']
  17. verbose_name = u"错题集"
  18. default_permissions = ()
  19. @staticmethod
  20. def add_error(question, user, answer_log):
  21. '''
  22. :param question: 试题对象
  23. :param user: 用户对象
  24. :param answer_log: 答题记录对象
  25. :return:
  26. '''
  27. instance = ErrorBook.objects.filter(question=question, create_user=user)
  28. if instance:
  29. instance.update(last_answer_log=answer_log, wrong_count=F('wrong_count')+1, last_time=timezone.now())
  30. else:
  31. ErrorBook.objects.create(question=question, create_user=user, last_answer_log=answer_log, wrong_count=1)