如何覆盖模板中的ArrayField默认错误消息?

时间:2019-04-15 08:11:52

标签: python django postgresql

我正在尝试更改Django为ArrayField生成的默认错误消息(输入的错误消息具体太多)

如果用户向我的ArrayField输入太多项目,则模板中将生成以下消息:

  

列表包含4个项目,最多只能包含3个。

我想将此消息更改为

  

您不能超过3个主题。

我尝试将以下error_messages添加到我的forms.py TopicForm元类中,但没有成功

    error_messages = {
        'topic': {
            'invalid': ("You can't have more than 3 topics."),
        },

这是我的models.py文件

from django.contrib.postgres.fields import ArrayField
from django.db import models

class Topic(models.Model)
    topic = ArrayField(models.CharField(max_length=20), size=3, blank=True,    null=True)

和我的forms.py

from django import forms
from .models import Topic

class TopicForm(forms.ModelForm):
    class Meta:
        model = Topic

        fields = ['topic']

请为此提供一些建议!谢谢!

1 个答案:

答案 0 :(得分:1)

ArrayField具有多个错误“代码”,可以处理各种类型的用户输入。

用元素过度填充的数组的错误“代码”为max_length

这是您缺少的代码的重写代码:)

error_messages = {
    'topic': {
        'max_length': ("You can't have more than 3 topics."),
     },

通过这种方式,您还可能希望自定义item_invalid错误消息,以便用户尝试提交不完整的输入。

例如,尝试提交string1,string2,(请参阅逗号吗?) 会提高:

  

数组中的第3项无效

您可以通过添加以下内容来自定义item_invalid消息:

error_messages = {
        'topic': {
            'max_length': ("You can't have more than 3 topics."),
            'item_invalid': ("Your customized message"),
         },