看似简单的情况:
Django模型有外键:
在异步上下文中,我执行:
class Invite(models.Model):
inviter = models.ForeignKey(User, on_delete=models.CASCADE)
...
在异步上下文中,我执行:
# get invite with sync_to_async decorator, then
print(invite.inviter)
获取async的最喜欢的错误:
您无法从异步上下文中调用此函数 - 请使用线程或sync_to_async
print(sync_to_async(invite.inviter)) # -> throws the same error
当然,我可以做:
@sync_to_async
def get_inviter(self, invite):
return invite.inviter
但是,如果我必须为每个queryset属性调用都这样做,那就太老套了。
有没有一种明智的方法来处理这个问题?
也许,有一种方法可以一次性处理所有这样的调用?
invite
的吗? - Brian Destura@sync_to_async def get_all_unaccepted_invites(self): return Invite.objects.filter(invitee=None)
- Lex Podgorny