在Wagtail管理员中,是否有与Django管理员的save_model方法等效的方法?

时间:2019-04-29 18:18:29

标签: django wagtail

我有一个模型,我希望将其实例限制为特定的Wagtail Site,因此我想使用该模型自动保存网站。在定义特定于站点的模型时,我已经定义了一个TenantAwareModel来继承:

class TenantAwareModel(models.Model):
    class Meta:
        abstract = True

    tenant = models.ForeignKey(Site, on_delete=models.CASCADE)

Wagtail将site作为request的一部分提供,因此在wagtail_hooks.py文件中,我想以与常规文件相同的方式覆盖save_model Django管理员。但是,我发现Wagtail的save_model上没有ModelAdmin方法。为了在模型中插入从请求对象(在本例中为站点)获取的值,是否可以在Wagtail管理员中拦截保存操作?我认为我无法使用pre_save信号,因为request中没有pre_save()

1 个答案:

答案 0 :(得分:0)

正在寻找答案,并找到了这篇文章。我试图拦截电子邮件生成django应用程序上的save方法,但是还发现这根本行不通。

在Wagtail ModelAdmin实施中,似乎只有简单的表单验证和数据保存...

https://github.com/wagtail/wagtail/blob/c72a4e09413bc6fc3a9cac8ed173378aa8652925/wagtail/contrib/modeladmin/views.py#L167

这是该课程中的所有选项...

https://github.com/wagtail/wagtail/blob/c72a4e09413bc6fc3a9cac8ed173378aa8652925/wagtail/contrib/modeladmin/options.py#L62

这表明可以编写自己的视图来进行创建和编辑,但是如果您必须重写所有业务逻辑并将其放入自定义视图中以获取任何内容,则可以否定“ django模型的简单注册”概念。除了基本的CRUD功能。

相关问题