python—创建能够序列化django rest框架中基础模型的所有子类的通用序列化程序的最佳方法是什么?

yv5phkfx  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(215)

我目前正在开发一个通知系统,它将通过api提供许多不同类型的通知。
我有一个名为 BaseNotification . 代码如下:

class BaseNotification(models.Model):
    message = models.CharField(max_length=500)
    seen = models.BooleanField(default=True)

    class Meta:
        abstract = True

我想对该模型进行子类化,以创建不同的通知变体:

class InvitationNotification(BaseNotification):
    invited_user = models.ForeignKey(User, on_delete=models.CASCADE)
    campagin = models.ForeignKey(Campagin, on_delete=models.CASCADE)
    # ... the rest of specific fields

class ChatMessageNotification(BaseNotification):
    contact = models.ForeignKey(User, on_delete=models.CASCADE)
    chat_room = models.ForeignKey(SomeSortOfChatRoomWhichIsNotImplementedYet, on_delete=models.CASCADE)
    # ... the rest of specific fields

如您所见,这些变体中的每一个都有一些与之相关的元数据。前端开发人员将能够使用这些元数据创建用户交互(例如,在聊天消息的情况下,前端开发人员将用户重定向到聊天室)
我想通过一个统一的api列出所有这些通知。为此,我需要一个序列化程序将对象序列化为json,但我不希望每个对象都有一个sperate序列化程序。理想情况下,我希望有一个通用的序列化程序,它能够序列化所有类型的通知,并根据传入的通知对象的类型生成不同的json输出(它可能会在引擎盖下使用其他序列化程序)。
也许我走错了方向,但最终目标是通过一个统一的api交付通知及其所有元数据。
我真的需要你的建议和帮助。提前谢谢大家。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题