django 实现 消息通知- 不使用第三方包
定义模型
class Message(models.Model): user = models.ForeignKey(UserModel, on_delete=models.DO_NOTHING, verbose_name="用户关联信息") name = models.CharField("标题", max_length=100) title = models.TextField("内容", max_length=1000, null=True, blank=True) to_users = models.ManyToManyField(User, blank=True, verbose_name='接受人', help_text="接受人") safe = models.BooleanField("状态(已读/未读)", default=False) Creation_time = models.DateTimeField("记录创建时间", auto_now_add=True) class Meta: db_table = "Message" verbose_name = "消息" verbose_name_plural = verbose_name
注册后台
@admin.register(Message)class MessageAdmin(admin.ModelAdmin): pass
定义序列化器
class MessageListCreateSerializers(serializers.ModelSerializer): class Meta: model = Message fields = '__all__'class MessageUpdateSerializers(serializers.ModelSerializer): safe = serializers.BooleanField(help_text="状态(已读/未读)") class Meta: model = Message fields = ("safe",)
书写视图集
class MessageModelsViewSet(ModelViewSet): """消息信息管理""" queryset = Message.objects.all() serializer_class = MessageListCreateSerializers pagination_class = BasePagination filter_backends = [DjangoFilterBackend] filter_fields = ('name', 'safe') def get_serializer_class(self): # 根据请求类型动态变更serializer if self.action == 'update': return MessageUpdateSerializers return MessageListCreateSerializers
注册路由
routers.register("Message", MessageModelsViewSet, basename="消息信息管理")