当处置惩罚M:N关系时,应该利用哪个预加载方法?
A) select_related
B) prefetch_related
C) both
D) none 答案:B
M:N关系需要利用prefetch_related,因为select_related仅实用于ForeignKey和OneToOne关系
以下哪种情况最适合利用prefetch_related?
A) 查询单个对象及其关联的10条记录
B) 列表页需要显示主对象及其关联的统计数量
C) 需要实时更新的高频写入操作
D) 需要关联5层以上的深度查询 答案:B
当需要批量处置惩罚关联数据时,prefetch_related能显著减少查询次数
常见报错解决方案
报错1:TortoiseORMError: Relation does not exist
原因:模型未正确注册或字段名拼写错误
解决:
检查register_tortoise的models配置
验证关联字段的related_name拼写
执行数据库迁移命令
报错2:OperationalError: connection closed
原因:异步连接未正确关闭
解决:
# 在请求处理完成后手动关闭连接
@app.middleware("http")
async def close_connection(request, call_next):
response = await call_next(request)
await connections.close_all()
return response
复制代码
报错3:ValidationError: field required (type=value_error.missing)