我和一些同事正在就此進行辯論。當你期待只有一個時,有沒有一種首選的方式來檢索Django中的對象?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
第一種方法似乎更行爲上是正確的,但使用控制流異常,其可能引入一些開銷。第二個是更迂迴,但不會提出例外。
有關哪個更適合的想法?哪個更有效率?
沒有Django的經驗,但仍即期。默認情況下,明確,簡潔和安全,無論是語言還是框架,都是很好的原則。 – nevelis 2017-04-10 16:53:24