无法序列化django信号中的模型对象

无法序列化django信号中的模型对象,django,django-models,Django,Django Models,我有一个任务模型。保存任务后,我想向设备发送FCM。所以我决定使用django信号。下面是它的代码: 模型: class Task(models.Model): id = models.AutoField(primary_key=True) issuer = models.ForeignKey(EndUser, on_delete=models.CASCADE, related_name='history') assignee = models.ForeignKey(Me

我有一个任务模型。保存任务后,我想向设备发送FCM。所以我决定使用django信号。下面是它的代码:

模型:

class Task(models.Model):
    id = models.AutoField(primary_key=True)
    issuer = models.ForeignKey(EndUser, on_delete=models.CASCADE, related_name='history')
    assignee = models.ForeignKey(Mechanic, on_delete=models.CASCADE, related_name='history')
    vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE, related_name='history')
    service = models.ForeignKey(Service, on_delete=models.CASCADE)
    status = models.CharField('Task Status', choices=TASK_STATUS, default=TASK_STATUS[0][0], max_length=64)
    payment_status = models.CharField('Payment Status', choices=PAYMENT_STATUS,
                                      default=PAYMENT_STATUS[0][0], max_length=64)

    def __str__(self):
        return "{}-{}-{}".format(self.service, self.issuer, self.assignee)


post_save.connect(send_mechanic_notification, sender=Task)
信号功能:

def send_mechanic_notification(sender, instance, created, **kwargs):
    if created:
        instance.assignee.device.send_message(
            title='New Task Available!',
            body='Hey!! A new task is available for you',
            data={
                "event": "new_task",
                "data": instance
            }
        )
现在,很明显这是行不通的,因为实例是一个模型对象,需要序列化。所以我尝试使用我定义的序列化程序。但这导致了循环依赖

我不想使用model_to_dict,因为它不会序列化嵌套字段,而序列化嵌套字段是一项要求

如何解决此问题?

将序列化程序导入本地(函数内部)

def send_mechanical_通知(发送方、实例、已创建、**kwargs):
从某处。序列化程序导入MySerializer
如果创建:
instance.assignment.device.send_消息(
title='新任务可用!',
body='嘿!!你有一个新任务',
资料={
“事件”:“新任务”,
“数据”:实例
}
)
本地导入序列化程序(在函数内部)

def send_mechanical_通知(发送方、实例、已创建、**kwargs):
从某处。序列化程序导入MySerializer
如果创建:
instance.assignment.device.send_消息(
title='新任务可用!',
body='嘿!!你有一个新任务',
资料={
“事件”:“新任务”,
“数据”:实例
}

)
谢谢它奏效了……我现在在自嘲哈哈。很高兴它奏效了!!!请接受答案并点击向上投票按钮:)谢谢它成功了…我现在在嘲笑自己哈哈。很高兴它成功了!!!请接受答案并点击向上投票按钮:)
def send_mechanic_notification(sender, instance, created, **kwargs):
    
    from somewhere.serializer import MySerializer
    
    if created:
        instance.assignee.device.send_message(
            title='New Task Available!',
            body='Hey!! A new task is available for you',
            data={
                "event": "new_task",
                "data": instance
            }
        )