簡體   English   中英

如何更改 django model 中的 unique_together 錯誤消息?

[英]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')

錯誤: UNIQUE 約束失敗:field1、field2

我想將錯誤消息更改為 {'field2': 'This value is already exist'}

或者

如何覆蓋 django model 中的 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM