from django.db import models from django.conf import settings class OnlineExamPromotionCode(models.Model): FLAG_PCTA = 'PCTA' FLAG_PCTP = 'PCTP' FLAG_CHOICES = ( (FLAG_PCTA, 'PCTA'), (FLAG_PCTP, 'PCTP') ) CODE_TYPE_PERSONAL = 0 CODE_TYPE_GROUP = 1 CODE_TYPE_CHOICES = ( (CODE_TYPE_PERSONAL, '个人'), (CODE_TYPE_GROUP, '团体') ) code = models.CharField(max_length=32, unique=True, primary_key=True) user = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE) flag = models.CharField( max_length=32, default=FLAG_PCTA, choices=FLAG_CHOICES) code_type = models.SmallIntegerField( default=CODE_TYPE_PERSONAL, choices=CODE_TYPE_CHOICES) remain_times = models.IntegerField( default=0, help_text='Only meaningful when code_type is group') used = models.BooleanField(default=False) used_by = models.ForeignKey( settings.AUTH_USER_MODEL, related_name='exam_promotionn_code_used', on_delete=models.CASCADE, null=True, blank=True) used_time = models.DateTimeField(blank=True, null=True) registration = models.ForeignKey( 'university.OnlineExamRegistrate', on_delete=models.PROTECT, null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) comment = models.CharField(max_length=128, blank=True, null=True) class Meta: db_table = 'online_exam_promotion_code'