型号:
class MyModel(models.Model):
field1 = models.CharField(max_length=50)
field2 = models.CharField(max_length=50)
class Meta:
unique_together = ('field1', 'field2')
错误:UNIQUE约束失败:field1,field2
我想将错误信息页更改为{"字段2":"此值已存在"}
或
如何覆盖django模型中的unique_error_message()?
我尝试这个:
def unique_error_message(self, model_class, unique_check):
return ValidationError(message='My custom error message')
但没用。
我认为一个解决方案可以是在save
方法中捕获错误,并引发您想要的任何东西:
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