gpt4 book ai didi

python - Django pre_save 信号不起作用

转载 作者:太空狗 更新时间:2023-10-29 18:24:42 27 4
gpt4 key购买 nike

我通过以下方式测试了Django的“pre_save”信号,但都无法捕捉到信号。

$

from django.db.models.signals import pre_save
import logging

def my_callback(sender, **kwargs):
logging.debug("======================================")
pre_save.connect(my_callback)
  1. 在 manage.py shell 中运行以上代码:然后我运行我的网站并看到 models.save() 成功运行,但回调函数没有运行。

  2. 或者,我再次在 shell 上运行上述代码,然后在 shell 中运行 models.save()。 “保存”再次运行良好,但回调函数仍然没有任何反应。

  3. 最后,我将上述代码嵌入到 __init__.py 文件中,并且仍然在网站上运行 save() 函数。仍然没有任何反应。

你能帮我弄清楚为什么 pre_save 信号似乎不起作用吗?

最佳答案

您没有为一个设置发件人类别。

from django.db.models.signals import pre_save
from myapp.models import MyModel
import logging

def my_callback(sender, **kwargs):
logging.debug("======================================")
pre_save.connect(my_callback, sender=MyModel)

其次,如果您使用的是 Django 1.3,则应使用新的装饰器语法。

# Inside your models.py
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver

class MyModel(models.Model):
field1 = models.TextField()
field2 = models.IntegerField()

@receiver(pre_save, sender=MyModel)
def mymodel_save_handler(sender, **kwargs):
logging.debug("======================================")

应该可以,但我还没有测试代码,如果它仍然有问题请告诉我。

关于python - Django pre_save 信号不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com