gpt4 book ai didi

python - Django exists() 与 DoesNotExist

转载 作者:太空狗 更新时间:2023-10-29 16:53:38 27 4
gpt4 key购买 nike

我有一些关于 django exists()DoesNotExist 异常的问题。

示例代码:

id = 1
# first
if User.objects.get(pk=id).exists():
# my logic
pass
# second
try:
User.objects.get(pk=id)
# my logic
pass
except User.DoesNotExist:
return 0

我经常使用get() 方法。哪种做法更好?哪个代码更好?第一还是第二?

最佳答案

if User.objects.get(pk=id).exists()

这行不通,所以这个问题很容易回答:这种方式不如行得通的方式:-)

我猜你实际上没有制作 Minimal Complete Verifiable Example因此在您发布未经验证的代码时错过了错误。


因此,我想您是在问以下两者之间的区别:

  if User.objects.filter(pk=id).exists():
# ... do the things that need that user to exist
  try:
user = User.objects.get(pk=id)
except User.DoesNotExist:
# ... handle the case of that user not existing

区别在于:

  • QuerySet.exists 方法在查询集上,这意味着您向它询问查询(“是否有任何实例匹配此查询?”),并且您还没有尝试检索任何特定实例。

  • 当您实际尝试检索一个实例但它不存在时,会引发模型的 DoesNotExist 异常。

    <

使用正确表达您的意图的任何一个。

关于python - Django exists() 与 DoesNotExist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40910149/

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