我的 DRF 应用程序中有这些定义:
通知模型:
from django.db import models
class Notifications(models.Model):
id = models.BigAutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name='notification_id')
user = models.ForeignKey(
"accounts.User", on_delete=models.CASCADE, blank=False, verbose_name="notification_receiver")
date = models.DateTimeField(verbose_name="notification_datetime", blank=False)
message = models.TextField(blank=False, verbose_name="notification_message")
NotificationSerializer:
from rest_framework import serializers
from notifications.models import Notifications
class NotificationsSerializer(serializers.ModelSerializer):
class Meta:
model = Notifications
fields = ["date", "message"]
和消费者:
from djangochannelsrestframework.generics import GenericAsyncAPIConsumer
from djangochannelsrestframework.observer import model_observer
from notifications.models import Notifications
from notifications.serializers import NotificationsSerializer
class NotificationsConsumer(GenericAsyncAPIConsumer):
serializer_class = NotificationsSerializer
queryset = Notifications.objects.all()
async def connect(self, **kwargs):
await self.model_activity.subscribe()
await super().connect()
@model_observer(Notifications)
async def model_activity(self, message, observer=None, action=None, **kwargs):
# send activity to frontend
await self.send_json(message)
@model_activity.serializer
def model_serialize(self, instance, action, **kwargs):
return NotificationsSerializer(instance=instance).data
我在这里关注文档:https://djangochannelsrestframework.readthedocs.io/en/latest/observer/observer.html
我正在通过邮递员连接到这个 websocket(如果这有区别的话)——我只是在开发一个 API 而不是前端。
即使我的通知表获得新数据,也不会通过通道发送任何消息。可能缺少什么?任何见解将不胜感激,谢谢!