Я хочу создать 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
.
Как я могу это сделать?