如何打印 django 信号的 kwargs?

How to print the kwargs of django signal?

我正在从模型发送信号,接收器确实收到了信号,但我无法在信号中使用 kwargs。我如何 see/print 了解信号中发送的内容?

import django.dispatch

timesheet_signal = django.dispatch.Signal()

def send_timesheet_signal(self, employee, employee_id):
        timesheet_signal.send_robust(sender=self.__class__, employee=employee, employee_id=employee_id)

@receiver(post_save, sender=Timesheet)
def update_employee_info(sender, instance, created, **kwargs):
    instance = kwargs.get('instance')
    employee    = instance.employee 
    employee_id = instance.employee_id 
    if created:
         ...

我尝试了很多形状和形式,这是接收器的当前状态。我如何 see/print 了解信号中发送的内容?

kwargs 可以被认为是一个字典,你可以通过多种方式解决这个问题。

for k, v in kwargs.items():
    print(f'{k}={v}')

print(kwargs)

一些文档: django.db.models.signals.pre_init

q = Question(question_text="What's new?", pub_date=timezone.now())

发送到 pre_init 处理程序的参数将是:

Argument    Value

sender  Question (the class itself) args    [] (an empty list      because there were no positional arguments passed to __init__())

kwargs  {'question_text': "What's new?", 'pub_date': datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)}