gpt4 book ai didi

python - .filter() 与 .get() 对于单个对象? ( Django )

转载 作者:行者123 更新时间:2023-11-28 19:32:22 26 4
gpt4 key购买 nike

我和一些同事就此进行了辩论。当您只期望一个对象时,是否有一种首选方法可以在 Django 中检索对象?

两种明显的方式是:

try:
obj = MyModel.objects.get(id=1)
except MyModel.DoesNotExist:
# We have no object! Do something...
pass

和:

objs = MyModel.objects.filter(id=1)

if len(objs) == 1:
obj = objs[0]
else:
# We have no object! Do something...
pass

第一种方法在行为上似乎更正确,但在控制流中使用异常可能会引入一些开销。第二个更迂回,但永远不会引发异常。

有没有想过哪一个更可取?哪个更有效率?

最佳答案

get()提供specifically for this case .使用它。

选项 2 几乎正是 get() 方法在 Django 中的实际实现方式,因此应该没有“性能”差异(而且您正在考虑它的事实表明您违反了编程的基本规则之一,即在编写和分析代码之前尝试优化代码——直到您拥有代码并可以运行它,您才知道它将如何执行,并在此之前尝试优化是痛苦的道路)。

关于python - .filter() 与 .get() 对于单个对象? ( Django ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018886/

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