Django Admin,保存时调用函数
Posted
技术标签:
【中文标题】Django Admin,保存时调用函数【英文标题】:Django Admin, Call function on save 【发布时间】:2015-05-15 06:13:02 【问题描述】:我的 Django 站点中有一个用于处理博客文章的应用程序。当一篇博文发布时,我想在第三方应用程序上安排一份时事通讯,通知订阅者新博文。
所以我想添加一个自定义函数,以便在保存博客文章时调用,我可以将这个 API 调用写入新闻通讯服务。
如何做到这一点?尝试查看文档,我能找到的只是管理操作,这似乎不是我想要的。
【问题讨论】:
Django 信号是您正在寻找的。 Post save signal 对你很有用。 你可以在模型中使用保存方法。这对你的工作来说很容易。在该 def django huey 中可以用于队列。 def save(self): super(ModelName,self).save() 【参考方案1】:您可以使用多种方法。
重写模型保存方法很简单,但每次保存模型时都会调用。
https://docs.djangoproject.com/en/dev/ref/models/instances/#saving-objects
如果它特定于管理站点,请在您的 ModelAdmin 中使用 model_save() 方法。 (我个人喜欢这种方法,因为它不会干扰您的模型)。
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
你也可以使用后保存信号,但保存方法似乎是首选(取决于你在做什么)Django: When to customize save vs using post-save signal
【讨论】:
【参考方案2】:您绝对应该选择https://docs.djangoproject.com/en/1.8/ref/signals/#django.db.models.signals.post_save,它提供了您在此处寻找的完整功能。
【讨论】:
当我们从管理员端保存对象时它会起作用吗?以上是关于Django Admin,保存时调用函数的主要内容,如果未能解决你的问题,请参考以下文章