首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写Wagtail删除确认消息

重写Wagtail删除确认消息
EN

Stack Overflow用户
提问于 2021-09-01 10:59:25
回答 1查看 199关注 0票数 0

我想覆盖删除消息(以使它更有信息,如“如果您删除,您将失去5项属于您的帐户”)。

我的想法是,每当有人删除我的“成员”,它也将删除所有项目属于该成员,确认消息应提供更多的信息。

我发现确认消息来自wagtail.contrib.modeladmin.views中的一个名为“DeleteView”的函数,在DeleteView类中。此函数将为Wagtail delete的模板提供消息。

这是我的会员班:

代码语言:javascript
复制
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 -> cont肋骨-> modeladmin -> views.py中。

这是删除模板:这个模板位于wagtail -> contrib -> modeladmin -> ->→modeladmin→delete.html中。

这是给管理门户中的工作人员的消息:

更新1:

在@Gasman下面,我更新了我的成员models.py如下:

代码语言:javascript
复制
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

我将所有这些代码放入我的成员models.py中:

现在我的models.py看起来是这样的:

然而,仍未发挥作用。

更新2:问题解决

@Gasman指出,在定制ModelAdmin之后,我们必须将它注册到Wagtail (直到我告诉Wagtail使用我的自定义"MemberModelAdmin")。

这就是我如何将我的自定义模型管理注册到Wagtail:

代码语言:javascript
复制
from wagtail.contrib.modeladmin.options import modeladmin_register

# Now register the Member Model Admin
modeladmin_register(MemberModelAdmin)

这是我的会员models.py:

这是注册自定义模型管理后的结果:

非常感谢加斯曼帮助了我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 12:26:55

按照覆盖ModelAdmin视图上的文档,创建一个重写confirmation_message方法的DeleteView子类:

代码语言:javascript
复制
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

代码语言:javascript
复制
class MemberModelAdmin(ModelAdmin)
    model = Member
    delete_view_class = MemberDeleteView
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69012491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档