【问题标题】:Django signals not fired when saving from admin interface从管理界面保存时未触发 Django 信号
【发布时间】:2018-11-09 07:05:08
【问题描述】:

我在pre_deletepost_savepre_delete 接收器上为某些模型配置了一些django 信号,这些模型存储在与模型相同的包中的signals.py 文件中。

从 API 调用或直接在终端中保存会触发信号,但从管理仪表板保存时不会触发信号。 我已经在AppConfigready() 方法中导入了信号,但没有任何改变。

对这个问题有帮助吗?

PS:如果有帮助,请使用 django-oscar。

from django.db.models.signals import post_delete, post_save, pre_delete

from django.dispatch import receiver

from oscar.core.loading import get_model

MyModel = get_model('mypackage', 'MyModel')

@receiver(post_save, sender=MyModel)
def do_stuff(sender, instance=None, created=False, **kwargs):
    update_stuff()

【问题讨论】:

  • 请发布您的模型和相关代码以提供帮助
  • 添加了一个 sn-p 来显示组织,update_stuff() 从管理员保存时永远不会被调用
  • “管理仪表板”是什么意思 - 是 Django 管理员还是 Oscar 仪表板?如果 Oscar 仪表板,那么您是如何通过仪表板使您的模型可编辑的?
  • 这是默认的 django 管理界面,而不是 oscar 仪表板。模型使用来自 django 的默认 admin.ModelAdmin 注册。
  • 您的 AppConfig 的 ready() 方法是否被 Django Admin 应用程序使用?我认为它没有?

标签: python django django-models django-admin django-oscar


【解决方案1】:

有类似的问题。我的问题是通过管理员保存模型后将图像上传到其他目的地。通过在 admin.py 上实现 Admin 类来解决它 例如,如果您有一个模型 Shop 那么在您的 admin.py 中会是这样的

@admin.register(Shop)
class ShopAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        instance = form.instance
        instance.save()
        image_path = instance.banner_image.path
        move_image(image_path)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-31
    • 2011-09-21
    • 1970-01-01
    • 2013-05-10
    • 2021-09-21
    • 1970-01-01
    • 2011-08-30
    • 2021-09-24
    相关资源
    最近更新 更多