简体   繁体   中英

How to change unique_together error message in django model?

Model:

class MyModel(models.Model):
    field1 = models.CharField(max_length=50)
    field2 = models.CharField(max_length=50)

    class Meta:
        unique_together = ('field1', 'field2')

Error: UNIQUE constraint failed: field1, field2

I want to change error mesaage to {'field2': 'This value is already exist'}

OR

How to override unique_error_message() in django model?

I try this:

def unique_error_message(self, model_class, unique_check):
    return ValidationError(message='My custom error message')

But didn't work.

I think one solution can be catching error in save method and raise whatever you want:

from django.db import IntegrityError


class MyModel(models.Model):
    field1 = models.CharField(max_length=50)
    field2 = models.CharField(max_length=50)

    class Meta:
        unique_together = ('field1', 'field2')

    def save(self, *args, **kwargs):
        try:
            return super().save(*args, **kwargs)
        except IntegrityError as err:
            if "unique constraint" in err.args[0]:
                # raise what you want

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM