如何重写Wagtail中Member模型对应的删除操作确认提示消息
Wagtail自定义Member模型删除确认提示实现
需求说明
我需要重写Wagtail管理后台的删除确认提示,新增关联删除的信息说明:当用户删除Member模型对象时,会同步删除该会员关联的所有条目,因此删除确认提示需要补充这部分说明,示例提示内容为「如果您执行删除操作,您账号下关联的5个条目也将一并丢失」。
经排查,确认提示消息来自wagtail.contrib.modeladmin.views下DeleteView类的confirmation_message方法,该方法返回的内容会渲染到Wagtail的删除操作模板中。
原Member模型代码如下:
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)
第一次修改(未生效)
参考建议后,我在Member模块的models.py中新增了自定义DeleteView和ModelAdmin代码:
from wagtail.contrib.modeladmin.options import ModelAdmin from wagtail.contrib.modeladmin.views import DeleteView class MemberDeleteView(DeleteView): def confirmation_message(self): return "Hello there!" class MemberModelAdmin(ModelAdmin): model = Member delete_view_class = MemberDeleteView
修改后配置并未生效。
最终解决方法
自定义ModelAdmin后需要手动注册到Wagtail中才会生效,补充注册代码如下:
from wagtail.contrib.modeladmin.options import modeladmin_register # 注册自定义的Member Model Admin modeladmin_register(MemberModelAdmin)
如需动态展示关联条目的数量,可修改MemberDeleteView的confirmation_message方法实现:
class MemberDeleteView(DeleteView): def confirmation_message(self): member = self.get_instance() related_count = PropertyPage.objects.filter(owner=member.user).count() return f"您确定要删除该会员吗?执行删除操作后,该账号下关联的{related_count}个条目也将一并丢失。"
内容的提问来源于stack exchange,提问作者Chris Dao
相关产品推荐
相关产品推荐

