覆盖Django Rest Framework中的unique_together错误消息

djr*_*kev 5 python django django-rest-framework

我正在尝试对模型的Meta使用两个字段(电子邮件和类型)的unique_together,但是错误消息始终是“字段电子邮件,类型必须进行唯一设置”。覆盖unique_together错误消息的最佳方法是什么?

Net*_*n29 5

选项1:序列化时

您可以UniqueTogetherValidator在序列化程序上使用(请参阅http://www.django-rest-framework.org/api-guide/validators/#uniquetogethervalidator)。

然后,您可以在初始化时覆盖显示的消息:

UniqueTogetherValidator(message='Your custom message', fields=(field1, field2,))
Run Code Online (Sandbox Code Playgroud)

选项2:模型验证

不幸的是,来自Django的unique_together错误消息ValidationError是硬编码的。如果要更改错误消息,我可以想到的一种方法是覆盖unique_error_message模型的方法。

def unique_error_message(self, model_class, unique_check):
    error = super().unique_error_message(model_class, unique_check)
    # Intercept the unique_together error
    if len(unique_check) != 1:
        error.message = 'Your custom message'
    return error
Run Code Online (Sandbox Code Playgroud)