Django 从M2M中间模型获取相关模型
在signals.py中,我正在捕获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
@接收器(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])