Невозможно отправить данные из базы данных клиенту в реальном времени без обновления - DJANGO CHANNELS
Я пробовал этот подход stackoverflow, но он не сработал
consumer.py
import json
import asyncio
from channels.consumer import AsyncConsumer
from django.contrib.auth import get_user_model
from channels.db import database_sync_to_async
from .models import Analytics
class AnalyticsConsumer(AsyncConsumer):
async def websocket_connect(self, event):
print('connected', event)
await self.send({
'type': 'websocket.accept'
})
analytics_obj = await self.getAnalytics()
await self.send({
'type': 'websocket.send',
'text': str(analytics_obj)
})
async def websocket_receive(self, event):
print('receive', event)
async def websocket_disconnect(self, event):
print('disconnected', event)
@database_sync_to_async
def getAnalytics(self):
return list(Analytics.objects.all().values())[0]['number']
В консоли отображается сообщение == analytics_obj
, но когда я вношу изменения в базу данных, они не отражаются в сообщении консоли. Для этого мне нужно обновить браузер. Какой смысл обновлять браузер при использовании WebSocket.
Просто при обновлении значения в базе данных новое сообщение не отправляется на frontend. Вам нужно отправить сообщение "update" по каналам django после обновления базы данных. Пока что единственный раз, когда вы отправляете данные аналитики, это когда вы подключаетесь к серверу.