Поймать "УНИКАЛЬНОЕ ограничение не удалось" для указанного поля c в модели Django - PullRequest
0 голосов
/ 19 апреля 2020

Я хочу создать discount code для пользователя. Я установил три unique_together и хочу поймать IntegrityError ошибку только для этих полей, которые будут уникальными вместе.

Это моя модель:

class DiscountCode(models.Model):
    student = models.ForeignKey('UserManager.Student')
    classroom = models.ForeignKey('Education.Classroom')
    code = models.CharField(max_length=5)

    class Meta:
        unique_together = ('student', 'classroom', 'code',)

    def save(self, *args, **kwargs):
        if not self.pk:
            # Set discount code
            try:
                self.code = self.discount_code_generator()
            except IntegrityError as e: # This might be change to specific fields error!
                if 'unique constraint' in e.args[0]:  # args[0] is message of exception
                    # Some code for handling error. 

Я знаю, как вызвать ошибку для IntegrityError, но я хочу отловить эту ошибку только для полей student, classroom и code.

Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...