Spec-Zone.ru › Wagtail 3

Добавление пользовательского метода очистки к моделям ModelAdmin

Самый простой способ — расширить вашу модель ModelAdmin и добавить к ней метод clean(). Например:

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.")

Это запустит метод clean и вызовет исключение ValidationError, когда вы сохраните модель, и проверка завершится неудачно. Ошибка будет отображена вверху панели администрирования wagtail.

Если вам нужен более точный контроль, вы можете добавить пользовательский метод clean() к WagtailAdminPageForm вашей модели. Вы можете переопределить форму вашей ModelAdmin аналогичным образом, как страницы wagtail.

Итак, создайте пользовательский WagtailAdminPageForm:

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

А затем установите base_form_class вашей модели:

from django.db import models

class ModelAdminModel(models.Model):
    base_form_class = ModelAdminModelForm

Использование self.add_error отобразит ошибку в конкретном поле, содержащем ошибку.

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/stable/reference/contrib/modeladmin/tips_and_tricks/custom_clean.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API