Django数据库路由如何向**hints参数传值?常见错误如何解决?
Django 数据库路由hints参数正确传递方式
读操作
通过QuerySet提供的with_hints()方法传递自定义参数,参数会直接透传到db_for_read的hints字典中:
TestModel.objects.with_hints(params="Hello World").filter()
写操作
批量操作(update/delete等)
和读操作逻辑一致,直接在QuerySet上链式调用with_hints()即可:
# 批量更新示例 TestModel.objects.with_hints(params="Hello World").filter(status=0).update(status=1) # 批量删除示例 TestModel.objects.with_hints(params="Hello World").filter(id__lt=10).delete()
单实例save操作
- Django 4.2及以上版本:
save()方法原生支持hints参数,直接传入即可:instance = TestModel.objects.filter().first() instance.name = "修改后的名称" instance.save(hints={"params": "Hello World"}) - Django 4.2以下版本:
save()没有原生hints参数,可通过给实例_state属性设置hints实现传递:instance = TestModel.objects.filter().first() instance.name = "修改后的名称" instance._state.hints = {"params": "Hello World"} instance.save()
内容的提问来源于stack exchange,提问作者lifelike
相关产品推荐
相关产品推荐

