Как получить данные из базы данных с помощью каналов django?

Я пытаюсь отработать реализацию WebSocket с использованием каналов django путем запроса к базе данных и печати данных, но у меня ничего не получается.

import json
from channels.generic.websocket import AsyncWebsocketConsumer
from channels.db import database_sync_to_async
from .models import Chart
from chart.api.serializers import ChartSerializer


class ChartConsumer(AsyncWebsocketConsumer):
    def get_chart(self):
        return database_sync_to_async(Chart.objects.all)()

    async def connect(self):

        data = self.get_chart()
        print(data) # <-------- I want to get this data
        # for i in data:
        #     chart_data = ChartSerializer(i).data
        #     await self.send(json.dumps({'number': chart_data.number}))
        #     print(chart_data)
        await self.accept()

    async def disconnect(self, code):
        pass

Выход

enter image description here

Нужно, чтобы database_sync_to_async вызывался в методе connect. Например, так:

class ChartConsumer(AsyncWebsocketConsumer):

    def get_chart(self):
        return Chart.objects.all()

    async def connect(self):
        data = await database_sync_to_async(self.get_chart)()
        print(data)
        # for i in data:
        #     chart_data = ChartSerializer(i).data
        #     await self.send(json.dumps({'number': chart_data.number}))
        #     print(chart_data)
        await self.accept()
Вернуться на верх