Django:模型中的验证 ->是否可以使用数据库中引发错误的数据自定义消息?



我知道在表单或模型中自定义错误消息有不同的方法

我在我的型号中自定义了唯一的消息

...
ran_bra = models.CharField("Arm", max_length=1, null=True, blank=True)
pat = models.CharField("Patient number", max_length=8, unique=True, null=True, blank=True,
validators = [
RegexValidator(
regex='^[A-Z]{3}-[0-9]{4}$',
message= 'L'identifiant doit être au format XXX-0000',
code='invalid_participant_id'
),
],
error_messages={'unique': u'Ce patient a déjà été randomisé dans le bras X. Veuillez vérifier votre saisie.'},
)
...

但我希望将消息中的X替换为数据库中的数据例如,如果用户试图输入数据库中已经存在的SMI-0001,我将用SMI-0001 的ran_bra值替换X

有可能吗?

您可以这样尝试。

error_messages={'unique': u'Ce patient a déjà été randomisé dans le bras{}. Veuillez vérifier votre saisie.'.format (your_value)},)

You can format strings directly in python. For example:

txt3 = "My name is {}, I'm {}".format("John", 36)
print(txt3)      # My name is John, I'm 36

在你的情况下,这将是

error_messages={
'unique': u'Ce patient a déjà été randomisé dans le bras {}. Veuillez vérifier votre saisie.'.format(ran_bra)
},

编辑

要做到这一点,需要使用一个函数。

def get_string(name):
return 'Ce patient a déjà été randomisé dans le bras ' + name + '. Veuillez vérifier votre saisie.'
# ...
error_messages = {
# ...
'unique': get_string(ran_bra),
}

最新更新