Django 从M2M中间模型获取相关模型

Django 从M2M中间模型获取相关模型,django,Django,在signals.py中,我正在捕获@接收器(m2m\u已更改,发送方=Manager.employees.through) 这是在经理和员工之间建立m2m关系时发出的信号 我试图让员工知道这一特定关系所指的是什么 我猜sender是“通过”关系对象,但我真的不确定 如果我打印(发件人)我得到 我尝试了引用\u employee=sender.employee\u id,但这给了我 print(发送方['employee\u id'])给我“ModelBase”对象不可订阅 print(send

在signals.py中,我正在捕获
@接收器(m2m\u已更改,发送方=Manager.employees.through)

这是在经理和员工之间建立m2m关系时发出的信号

我试图让员工知道这一特定关系所指的是什么

我猜
sender
是“通过”关系对象,但我真的不确定

如果我
打印(发件人)
我得到

我尝试了
引用\u employee=sender.employee\u id
,但这给了我

print(发送方['employee\u id'])
给我
“ModelBase”对象不可订阅

print(sender.employee\u id)
给我一个错误
“ModelBase”对象不可订阅

我现在真的在尝试我能想到的一切


谢谢。

发送方一样,该信号也传递其他参数

@receiver(m2m_changed, sender=Manager.employees.through)
def my_signal_receiver(sender, **kwargs):
    # kwargs is a dictionary
    for key, value in kwargs.items():
        print(key, value)
以以下为例:

an_employee = Employee.objects.create(name='Brenden')
my_manager.employees.add(an_employee)
词典中将包含以下项目:

kwargs['instance']
是正在更改的模型的实例。在上面的示例中,它将是
my\u manager

kwargs['model']
是要添加的类。在这种情况下,
员工

kwargs['pk\u set']
将是
{an\u employee.id}
,一组正在添加的密钥,所以您可以执行以下操作

my_employee = kwargs['model'].objects.get(id=kwargs['pk_set'][0])