我有一个关于 dispatch_uid 用于信号的问题。

目前,我通过简单地添加 if not instance.order_reference 来防止信号的多次使用。我现在想知道 dispatch_uid 是否具有相同的功能,我可以删除“if not ”子句。

信号.py

def reserveditem_create_order_reference(sender, instance, **kwargs):
    if not instance.order_reference:
        instance.order_reference = unique_order_reference_generator()

app.py

class OrdersConfig(AppConfig):
    name = 'orders'

    def ready(self):

        #Pre save signal for ReservedItem model
        reserved_model = self.get_model('ReservedItem')
        pre_save.connect(
            reserveditem_create_order_reference,
            sender=reserved_model,
            dispatch_uid="my_unique_identifier"
        )

最佳答案

正如 the docs



所以是的,删除 if 子句并设置一个唯一的信号接收器 dispatch_uid 将阻止您的处理程序被多次连接(以及之后被调用)。

关于Django 信号 dispatch_uid,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50880893/

10-16 17:18