Отмена сообщения подтверждения удаления Wagtail

Я хотел бы переопределить сообщение об удалении (сделать его более информативным, например, "если вы удалите, вы потеряете 5 предметов, принадлежащих вашей учетной записи").

Моя идея заключается в том, что каждый раз, когда кто-то удаляет моего "участника", он также удаляет все предметы, принадлежащие этому участнику, а подтверждающее сообщение должно предоставлять больше информации.

Я обнаружил, что сообщение подтверждения приходит из функции с именем "confirmation_message" в wagtail.contrib.modeladmin.views, в классе DeleteView. Эта функция предоставляет сообщение для шаблона Wagtail delete.

Это мой класс-член:

class Member(ClusterableModel):

user = models.OneToOneField(User, on_delete=models.CASCADE)

email_confirmed = models.BooleanField(default=False)
phone = PhoneNumberField(blank=True)
phone_2 = PhoneNumberField(blank=True)
inside_scoop = models.TextField(blank=True)
lifetime_member = models.BooleanField(default=False)
activation_date = models.DateField(null=True, blank=True, default=timezone.now)
deactivation_date = models.DateField(null=True, blank=True)
points_balance = models.IntegerField(default=0)

favorite_properties = models.ManyToManyField(
    PropertyPage, blank=True, related_name="favorite_properties"
)


base_form_class = MemberFormAdmin

def delete(self: object, *args: list, **kwargs: dict) -> None:
    PropertyPage.objects.filter(owner=self.user).delete()
    self.user.delete()
    return super(self.__class__, self).delete(*args, **kwargs)

Это сообщение подтверждения по умолчанию, которое приходит из Wagtail: это лежит в wagtail -> contrib -> modeladmin -> views.py enter image description here

А это шаблон delete: он лежит в wagtail -> contrib -> modeladmin -> templates → modeladmin → delete.html enter image description here

Это сообщение для персонала на портале администратора: enter image description here

Пожалуйста, помогите мне с этим делом, спасибо.

Согласно документации по переопределению представлений ModelAdmin, создайте подкласс DeleteView, переопределяющий метод confirmation_message:

from wagtail.contrib.modeladmin.views import DeleteView

class MemberDeleteView(DeleteView):
    def confirmation_message(self):
        sprocket_count = self.instance.sprockets.count()
        return "This member has %d sprockets. Are you sure you want to delete?" % sprocket_count
<<<Затем, в конфигурации ModelAdmin для этой модели, укажите ваш пользовательский подкласс как

:delete_view_class

class MemberModelAdmin(ModelAdmin)
    model = Member
    delete_view_class = MemberDeleteView
Вернуться на верх