如何解决无法在Django信号中序列化模型对象
我有一个任务模型。保存任务后,我想将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,related_name='history')
vehicle = models.ForeignKey(Vehicle,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_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
}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。