我目前正在开发一个通知系统,它将通过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交付通知及其所有元数据。
我真的需要你的建议和帮助。提前谢谢大家。
暂无答案!
目前还没有任何答案,快来回答吧!