我们有一个模特:
class Item(model.Model):
pass
def items_red(self):
# filter items by red color
# model instance is NOT changed (saved)
pass
我需要用Django信号捕获Item.items_red()
方法执行。
有什么建议怎么做? items_red
不以任何方式更改模型实例。
答案 0 :(得分:3)
您需要定义自定义信号:
import django.dispatch
items_red_executed = django.dispatch.Signal()
class Item(model.Model):
pass
def items_red(self):
# filter items by red color
# model instance is NOT changed (saved)
items_red_executed.send(sender=self.__class__)
然后是接收者:
from django.dispatch.dispatcher import receiver
@receiver(items_red_executed, sender=Item)
def my_receiver(**kwargs):
print(kwargs.get('sender'))
有关更多信息,请参阅documentation。