首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django等待一个带有@database_sync_to_async装饰器的函数来获取多个对象抛出错误

Django等待一个带有@database_sync_to_async装饰器的函数来获取多个对象抛出错误
EN

Stack Overflow用户
提问于 2020-03-29 18:34:00
回答 1查看 2.1K关注 0票数 2

我正在集成异步功能的django通道。我试图在函数上使用await来获取一个用户模型的多个对象。

consumers.py

代码语言:javascript
复制
class TeamConsumer(AsyncConsumer):
    async def websocket_connect(self, event):
        await self.send({
                "type":"websocket.accept"
        })

    async def websocket_receive(self, event):
       o_user = await self.users()
       print(o_user)

    @database_sync_to_async
    def users(self):
        return UserModel.objects.all()

尝试从上面的代码中获取用户会导致错误“您不能从异步上下文中调用它-使用线程或sync_to_async”。

但是,如果我使用"UserModel.objects.all().first()“获取单个对象,则一切正常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 18:48:04

我认为这是因为queryset是懒惰的。调用UserModel.objects.all()实际上并不执行查询。当您打印查询时,将执行查询。尝试在users()方法中将其转换为列表。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60912945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档