Django channels: 如何在异步上下文中引用ForeignKey及其字段?

0 投票
0 回答
37 浏览
提问于 2025-04-12 06:45

我现在正在把几个Websocket处理程序从WebsocketConsumer转换成AsyncWebsocketConsumer。有一行代码让我遇到了问题。同步版本是:

self.mydatacache['workernr'] = school.objects.get(id=myschool).tf_worker.id

我第一次尝试写异步版本是这样的:

self.mydatacache['workernr'] = await school.objects.aget(id=myschool).tf_worker.id

第二次尝试:

school_object = await school.objects.aget(id=myschool)
tf_worker_object = await school_object.tf_worker   
self.mydatacache['workernr'] = tf_worker_object.id

我尝试了很多不同的写法,但总是出现同样的错误:

You cannot call this from an async context

我可能完全走错方向了。有没有什么建议?

附注:我知道有database_sync_to_async这个东西。如果可以的话,我想避免使用它...

0 个回答

暂无回答

撰写回答