方法调用上的Django信号(不触发模型实例)
我们有一个模型:方法调用上的Django信号(不触发模型实例),django,django-signals,Django,Django Signals,我们有一个模型: class Item(model.Model): pass def items_red(self): # filter items by red color # model instance is NOT changed (saved) pass 我需要捕获带有Django信号的Item.items\u red()方法执行。 有什么建议吗项目\u红色不以任何方式更改模型实例 您需要定义一个自定义信号: impo
class Item(model.Model):
pass
def items_red(self):
# filter items by red color
# model instance is NOT changed (saved)
pass
我需要捕获带有Django信号的Item.items\u red()
方法执行。
有什么建议吗<代码>项目\u红色不以任何方式更改模型实例 您需要定义一个自定义信号:
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'))
有关更多信息,请参阅。您需要定义自定义信号:
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'))
有关更多信息,请参阅。Thx以了解解释,我不经常使用信号。但现在我知道这有点开销,我只想创建额外的方法,并在
项中触发一个,我认为您不必太担心这种开销,在DB驱动的应用程序中,最大的瓶颈通常是由您的DB性能造成的。不过,代码应该尽可能明确。在经过几个月的代码编写之后,如果您支持您的项目,这会有所帮助。我不经常使用信号。但现在我知道这有点开销,我只想创建额外的方法,并在项中触发一个,我认为您不必太担心这种开销,在DB驱动的应用程序中,最大的瓶颈通常是由您的DB性能造成的。不过,代码应该尽可能明确。当您在编码两个月后支持您的项目时,它会有所帮助