Adding a custom clean method to your ModelAdmin models¶
The simplest way is to extend your ModelAdmin model and add a clean() model to it. For example:
from django import forms from django.db import models class ModelAdminModel(models.Model): def clean(self): if self.image.width < 1920 or self.image.height < 1080: raise forms.ValidationError("The image must be at least 1920x1080 pixels in size.")
This will run the clean and raise the
ValidationError whenever you save the model and the check fails. The error will be displayed at the top of the wagtail admin.
If you want more fine grained-control you can add a custom
clean() method to the
WagtailAdminPageForm of your model.
You can override the form of your ModelAdmin in a similar matter as wagtail Pages.
So, create a custom
from wagtail.admin.forms import WagtailAdminPageForm class ModelAdminModelForm(WagtailAdminPageForm): def clean(self): cleaned_data = super().clean() image = cleaned_data.get("image") if image and image.width < 1920 or image.height < 1080: self.add_error("image", "The image must be at least 1920x1080px") return cleaned_data
And then set the
base_form_class of your model:
from django.db import models class ModelAdminModel(models.Model): base_form_class = ModelAdminModelForm
self.add_error will display the error to the particular field that has the error.