好好回答这个问题。我提出这个问题:
Puntuaciones.objects.filter(bar__id=b).get(usuario=v.usuario2)
这很完美,但是当我把它放在if语句中时,就像这样:
if(Puntuaciones.objects.filter(bar__id=b).get(usuario=v.usuario2)):
我有一个问题,当查询返回一个对象Puntuaciones我没有任何问题,但是当没有结果时它会抛出我:
Exception Value: Puntuaciones matching query does not exist.
所以我的问题是,如果此查询可能不成功,我如何为查询执行if语句。
我尝试用Q对象,使用exists()(这只适用于查询集...我不知道如何使它工作。有什么建议吗?谢谢
答案 0 :(得分:0)
get()
要么返回一个对象,要么抛出ObjectDoesNotExist
异常,在try/except
的帮助下抓住它:
try:
Puntuaciones.objects.filter(bar__id=b).get(usuario=v.usuario2)
# do something if object was found
except Puntuaciones.DoesNotExist:
# do smth if nothing found
另一种选择是使用exists()
:
if Puntuaciones.objects.filter(bar__id=b, usuario=v.usuario2).exists():
# do something if object was found
答案 1 :(得分:0)
我建议尝试:除了:对。这样,当触发异常时,您将在适当的位置执行代码。请注意,您确实应该在设置中使用正确的异常类型。请注意,如果要跳过except中的处理,则需要输入显式传递(python noop)语句。否则你会收到缩进错误。
try:
if(Puntuaciones.objects.filter(bar__id=b).get(usuario=v.usuario2)):
# put code in here
pass # dummy statement to be replaced by actual code.
except:
# Put exception code here.
pass