gpt4 book ai didi

python - django select_for_update 和 select_related 在同一个查询上?

转载 作者:行者123 更新时间:2023-11-29 12:43:46 25 4
gpt4 key购买 nike

有谁知道您是否可以在单个查询中同时执行 .select_for_update() 和 .select_related() 语句?如:

employee = get_object_or_404(Employee.objects.select_for_update().
select_related(‘company’), pk=3)

它似乎在我的代码中的一个地方工作正常,但第二次使用为一系列单元测试抛出“InternalError:当前事务已中止”。删除 .select_related 并只留下 .select_for_update 使错误消失,但我不知道为什么。我想同时使用它们来优化我的代码,但如果被迫选择,我会选择 select_for_update。想知道是否有办法同时使用两者。使用 postgres 和 django 1.9。谢谢!

最佳答案

从 Django 2.0 开始,您可以select_for_updateselect_related 一起使用,即使是在可为空的关系上 - by using new parameter of=...

使用文档中的Person 示例,您可以这样做

Person.objects.select_related('hometown').select_for_update(of=('self',))

这只会锁定 Person 对象

关于python - django select_for_update 和 select_related 在同一个查询上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com