Как переопределить сообщение об ошибке max_length для поля ImageField?

Я использую Django 2.2. У меня есть поле ImageField. Мне нужно переопределить его максимальную длину по умолчанию 100 и переопределить сообщение об ошибке, которое оно генерирует.

Мне кажется, или сообщения об ошибках для всего, что наследуется от FileField, не могут быть переопределены?

class PageTemplate(models.Model)
    background_image = models.ImageField(
          blank=True,
          null=True,
          verbose_name='Header Image',
          upload_to=page_template_image_path,
          max_length=150,
          error_messages={'max_length': "This is a test 1"},
          validators=(validate_image_file_extension, validate_filename_size),
      )

Сообщение об ошибке, которое я получаю, выглядит так Ensure this filename has at most 150 characters (it has 157). И прежде чем кто-нибудь спросит, да, я не забыл запустить makemigrations и migrate.

Вот как я смог решить эту проблему. PageTemplateAdmin теперь использует PageTemplateForm, и именно там я смог переопределить сообщение об ошибке.

    class PageTemplate(models.Model)
        background_image = models.ImageField(
              blank=True,
              null=True,
              verbose_name='Header Image',
              upload_to=page_template_image_path,
              max_length=150,
              validators=[validate_image_file_extension],
          )


    class PageTemplateForm(forms.ModelForm):
        class Meta:
            model = PageTemplate
            fields = '__all__'
            error_messages = {
                'background_image': {
                    'max_length': ('Filename has to be less than 100 characters'),
                },
            }


    class PageTemplateAdmin(admin.ModelAdmin):
        form = PageTemplateForm
        list_display = [...]
Вернуться на верх