Django,如果对象不存在,在AND查询集上得到错误



我想在Django中运行一个基于查询返回值的if条件。

我想运行的查询是:

q = Voterlist.objects.get(Q(voter=request.user),Q(verse=verse)):

现在,如果q存在,我想更新Voterlist的投票列。否则我想把对象添加到数据库中。这里的问题是,如果对象已经存在,也就是q存在,那么它运行得很好,但是如果q不存在,那么我得到一个500的错误代码,查询不会运行。我尝试使用一个尝试块,我也尝试使用查询做一个if语句,但我无法运行这个,如果q不存在。

你试过除了这样的尝试吗?

try:
    q = Voterlist.objects.get(Q(voter=request.user),Q(verse=verse))
except (VoterList.DoesNotExist, VoterList.MultipleObjectsReturned):
    # do something
    pass

update:你必须检查MultipleObjectsReturned异常,因为该查询可能返回多个对象;这取决于你想怎么做,在一个或多个try catch块中;

同样,您最好编写没有Q对象的get查询集,就像这样,基本上是一样的:

Voterlist.objects.get(voter=request.user, verse=verse)

这个查询不需要Q对象,只需要:

q = Voterlist.objects.get(voter=request.user, verse=verse)

,正如BodgiG所建议的,您可以捕获q返回DoesNotExist的情况。

try:
   q = Voterlist.objects.get(Q(voter=request.user),Q(verse=verse))
except VoterList.DoesNotExist:
   # do something
   pass

相关内容

  • 没有找到相关文章

最新更新