Как я могу использовать функцию "database_sync_to_async" для получения нескольких объектов

Я реализую потребитель, и хочу получить все товары, например:

class MyConsumer(AsyncConsumer):
   async def get_all_producs():
        products = await database_sync_to_async(Products.objects.all)()

Когда я пытаюсь получить все продукты из приведенного выше кода, возникает ошибка "You cannot call this from an async context - use a thread or sync_to_async."

Я знаю, что запрос ленив, но как я могу получить все продукты?

Насколько я понимаю, это невозможно. Превратите данные запроса в словарь и верните его.

   @database_sync_to_async
   def get_all_producs():
        products = Products.objects.all()
        dic = {}
        for p in products:
             dic[p.pk] = p.data
        return dic

Примечание: Вы не можете отправить обратно объект напрямую, поскольку объекты не являются сериализуемыми в JSON.

Вернуться на верх